• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について)

コマンドプロンプトを使用して複数フォルダのファイル名一括置換する方法

このQ&Aのポイント
  • コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加える方法について教えてください。
  • 対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさせていただきました。
  • 現在、同じフォルダに格納されているファイルに対しては、for %i in (*.xls) do ren %i [LOCAL]%i のコマンドで実行できていますが、カレントフォルダの配下すべてのフォルダを対象にする方法を教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.1

私の環境では、これでうまく行きました。 for /r %%i in (*.xls) do ren "%%i" "[LOCAL]%%~ni.xls"

参考URL:
http://sgry.jp/pgarticles/batch.html

その他の回答 (1)

  • shokker02
  • ベストアンサー率45% (204/446)
回答No.2

対象が 「現フォルダ(ディテクトリ)直下のフォルダ」が条件ですが 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 を実行させてください。

abcde0116
質問者

お礼

バッチファイルを作成するという発想がありませんでしたので、 非常に参考になりました。 フォルダ名のrenameの際は、shokker02さんのコマンドを使用させていただきます。 ご回答いただき、ありがとうございました。

関連するQ&A