プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。
フォルダ名をリネーム(全角英数字⇒半角英数字)の作業をすることに
なったのですが、フォルダの数が多すぎて手作業では効率が悪くて困っています。
そういった作業が簡単にできるDOSコマンドを探しております。

何か適当なバッチファイル、コマンドなどがあれば教えてください。
環境はWin2000 proです。

お手数おかけしますが、なにとぞよろしくお願い
いたします。

A 回答 (5件)

こんにちは。


VBAで処理する場合、yanmaaさんの補足をさせてもらいます。

MyName = Dir(HenPath, vbDirectory)
の部分を
MyName = Dir(MyPath, vbDirectory)
にしてやってみればいけると思います。頑張ってください。。。
    • good
    • 0
この回答へのお礼

おお!!バグが治りました。
実行したら確かにフォルダだけ変換ができてます。
ありがとうございました。

お礼日時:2002/05/31 17:26

VBスクリプトで作ってみました。


参考までにどうぞ。ご自分の環境に合わせて変えてみてください。

 
------------------------------------------
'フォルダ名の全角を半角に変換.vbs

dim myoldfolname
'ドラッグアンドドロップを使えるように
Set myobjArgs = WScript.Arguments

'フォルダ名を調べる準備
Set myfso = CreateObject("Scripting.FileSystemObject")

objcnt=myobjArgs.Count 'ドロップされたアイコンの数を計算

for h=0 to objcnt-1
mynewfolname=""
dim mynewfolname
set myobjfol = myfso.getfolder(myobjArgs(h))
myfolname=myobjfol.name
myfolpath=myobjfol.path


msgbox "変換しようとするフォルダは "&myfolname&" です。"


'一文字づつ半角文字を探します。。 英数字以外はどうなるか不明。
for i=1 to len(myfolname)
myoldfolname=mid(myfolname,i,1)
msgbox myoldfolname&" の文字は"

if asc(myoldfolname) < 0 then

'ここで全角英数字から半角英数字に変換 
'キャラクタコード 全角のAは-32160 半角のAは65
mynewfolname=mynewfolname&chr(asc(myoldfolname)+(65+32160))
msgbox "半角に変換します。"
else
mynewfolname=mynewfolname&myoldname
msgbox "半角でしたので変換しません。"
end if

next
'ここで半角の文字と置き換え。新旧入れ替えです。
myobjfol.name=mynewfolname

msgbox "半角に変換しました。 "&mynewfolname

next
'メッセージボックスを表示させたくない場合は msgboxの頭に'をつけてください。
'
    • good
    • 0
この回答へのお礼

詳しい内容をありがとうございました。
早速参考にさせていただきます。

お礼日時:2002/05/31 16:58

--------エクセルの場合---------


dir /b /a:d > dir.txt
このファイルをエクセルで開き
B1セルに「=ASC(A1)」します。
これでB1セルに半角文字がセットされます。

フォルダ名等はDOSコマンドでは
ren 現フォルダ名 新フォルダ名
ですので
C1のセルに ="REN " & A1 & " " & B1
とします。

C1の結果をメモ帳にコピーして後は名前つけて保存で拡張子をBATにしてバッチファイル化して実行でしょう。

-----------VBAの場合---------------
VBAならばこのような文になります。MyPathに変更した元になるフォルダ名(ここではc:\temp\配下のフォルダ全てが対象)
Sub a()
MyPath = "C:\temp\"
MyName = Dir(HenPath, vbDirectory)
Do While MyName <> "" ' ループを開始します。
' 現在のフォルダと親フォルダは無視します。
If MyName <> "." And MyName <> ".." Then
' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Name MyPath & MyName As MyPath & StrConv(MyName, vbNarrow)
End If
End If
MyName = Dir ' 次のフォルダ名を返します。
Loop
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
「VBAの場合」で試してみました。
が、エラーが出てしまいます。
やっぱり手入力の方が遠回りでも確実なんでしょうか。。。

お礼日時:2002/05/31 16:57

こんにちは。

 私もこの疑問に興味をもちましたので、投稿させていただきます。

すこし調べてみたのですが、VBAのStrConvという関数でご希望の操作ができそうです。が私、VBAはとんちんかんなので、つぎの方へバトンタッチしたいと思います。ごめんなさい。 (泣

VBスクリプトですと、StrConv関数はなかったです。

あぁどなたか回答をつづけてくれないかなぁ
私もこの答えしりたいです。

お役に立てなくてごめんなさい。
    • good
    • 1
この回答へのお礼

前向きな回答をいただきありがとうございます!
続きの答えを待つことにいたします。

お礼日時:2002/05/30 17:13

こんにちは、honiyonです。



 その操作に使えるコマンドはなかったと思います。
 たまに一括リネーム、なんていうフリーソフトをみかけるので、ひょっとしたらそれらが使えるかも知れません。

  Vectorで探してみてください。(参考URL)

  参考になれば幸いです(..

参考URL:http://www.vector.co.jp
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
参考URLから調べてみることにします。

お礼日時:2002/05/30 16:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!