- ベストアンサー
コマンドプロンプトを使用して複数フォルダのファイル名一括置換する方法
- コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加える方法について教えてください。
- 対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさせていただきました。
- 現在、同じフォルダに格納されているファイルに対しては、for %i in (*.xls) do ren %i [LOCAL]%i のコマンドで実行できていますが、カレントフォルダの配下すべてのフォルダを対象にする方法を教えていただけますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私の環境では、これでうまく行きました。 for /r %%i in (*.xls) do ren "%%i" "[LOCAL]%%~ni.xls"
その他の回答 (1)
- shokker02
- ベストアンサー率45% (204/446)
対象が 「現フォルダ(ディテクトリ)直下のフォルダ」が条件ですが for /d %a in ( *.* ) do ren %a LOCAL_%a で一応イケます。Windows2000SP4 の command ですが確認しました。 (/d で対象をフォルダのみに指定 ) (ren %a LOCAL_%a でフォルダ名の頭にLOCALを付ける) ただ、原因不明ですが「頭にLOCAL_ を付ける」をなぜか2~3回行って しまい、LOCAL_LOCAL_LOCAL_folder... のような名前になってしまう事が頻発しました。 成功した事もあるので、なぜそうなるのかわかりません。 Windows のコマンドプロンプトによっても異なるかも知れないので、 事前にテスト環境でテストしてください。 リネームでファイルを失う事はありませんが、大量だと元に戻すだけでも 大変なので。 ならば、ということで、同じ構造を利用して 「フォルダ名を1つずつリネームするバッチファイルを作る」 という手を考えました。 最初にファイル BATCH.BAT が存在しない事を確認し、ある場合は削除して下さい。 既に他の用途に使ってるならファイル名を変更してください。 for /d %a in ( *.* ) do echo ren %a LOCAL_%a >>BATCH.BAT これを実行するとバッチファイル BATCH.BAT が作られ、中身が ren folder1 LOCAL_folder1 ren folder2 LOCAL_folder2 ren folder3 LOCAL_folder3 : のようになりますから、そしたら BATCH.BAT を実行させてください。
お礼
バッチファイルを作成するという発想がありませんでしたので、 非常に参考になりました。 フォルダ名のrenameの際は、shokker02さんのコマンドを使用させていただきます。 ご回答いただき、ありがとうございました。