- ベストアンサー
自動でフォルダ名をリネームしたいのですが・・・
お世話になっております。 フォルダ名をリネーム(全角英数字⇒半角英数字)の作業をすることに なったのですが、フォルダの数が多すぎて手作業では効率が悪くて困っています。 そういった作業が簡単にできるDOSコマンドを探しております。 何か適当なバッチファイル、コマンドなどがあれば教えてください。 環境はWin2000 proです。 お手数おかけしますが、なにとぞよろしくお願い いたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 VBAで処理する場合、yanmaaさんの補足をさせてもらいます。 MyName = Dir(HenPath, vbDirectory) の部分を MyName = Dir(MyPath, vbDirectory) にしてやってみればいけると思います。頑張ってください。。。
その他の回答 (4)
- norinori555
- ベストアンサー率37% (20/54)
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の頭に'をつけてください。 '
お礼
詳しい内容をありがとうございました。 早速参考にさせていただきます。
- yanmaa
- ベストアンサー率45% (207/457)
--------エクセルの場合--------- 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
お礼
ありがとうございました。 「VBAの場合」で試してみました。 が、エラーが出てしまいます。 やっぱり手入力の方が遠回りでも確実なんでしょうか。。。
- norinori555
- ベストアンサー率37% (20/54)
こんにちは。 私もこの疑問に興味をもちましたので、投稿させていただきます。 すこし調べてみたのですが、VBAのStrConvという関数でご希望の操作ができそうです。が私、VBAはとんちんかんなので、つぎの方へバトンタッチしたいと思います。ごめんなさい。 (泣 VBスクリプトですと、StrConv関数はなかったです。 あぁどなたか回答をつづけてくれないかなぁ 私もこの答えしりたいです。 お役に立てなくてごめんなさい。
お礼
前向きな回答をいただきありがとうございます! 続きの答えを待つことにいたします。
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 その操作に使えるコマンドはなかったと思います。 たまに一括リネーム、なんていうフリーソフトをみかけるので、ひょっとしたらそれらが使えるかも知れません。 Vectorで探してみてください。(参考URL) 参考になれば幸いです(..
- 参考URL:
- http://www.vector.co.jp
お礼
早速ありがとうございます。 参考URLから調べてみることにします。
お礼
おお!!バグが治りました。 実行したら確かにフォルダだけ変換ができてます。 ありがとうございました。