※ ChatGPTを利用し、要約された質問です(原文:バッチにすると動作しない)
バッチでファイル名変換する方法
このQ&Aのポイント
バッチでファイル名を一括変換する方法について教えてください。コマンドプロンプトでは動作するのに、bat形式のファイルに保存して実行すると一瞬で終了してしまいます。
フォルダ内にあるファイル名の一部を変更したいのですが、バッチで実行すると変換されません。コマンドプロンプトで実行すると変換されるので、バッチでの書き方に問題があるのでしょうか?
バッチでファイル名を一括変換する方法が分かりません。コマンドプロンプトで実行すると変換されるのに、バッチで実行すると結果が出力されません。書き方が間違っているのか、他の原因があるのか教えてください。
コマンドプロンプト初心者です。
仕事でファイルの名前を一括変換する為にバッチを作成したいのですが、
コマンドプロンプトでは動作するのに、bat形式のファイルに保存して実行すると、一瞬だけ窓が開いてすぐ終了してしまいます。
変換はもちろんされておりません。
フォルダの構成は下記の通りです。
フォルダ
┣フォルダA
┣p001-a01_01.jpg
┣p002-b01_01.jpg
┗p003-c01_01.jpg
┣フォルダB
┣p001-a01_01.jpg
┣p002-b01_01.jpg
┗p003-c01_01.jpg
┗フォルダC
フォルダ内にある001-a01_01.jpgの【_01】を消して001-a01.jpgという風にしたいのですが、
cd C:\Data
for /r /d %i in (*) do ren %%i\p???-a01_01.jpg p???-a01.jpg
for /r /d %i in (*) do ren %%i\p???-b01_01.jpg p???-b01.jpg
for /r /d %i in (*) do ren %%i\p???-b01_01.jpg p???-c01.jpg
上記のコマンドをメモ帳に書いて、コマンドプロンプトで実行したところ、ファイル名の変換はされました。
しかし、そのメモ帳をbat形式で保存をして実行をすると、冒頭で書いたように実行されません。
書き方など、自分なりに調べて試してみたのですが、やはり変換されません。
コマンドプロンプトで実行する時と、バッチで実行する時では書き方が違うのでしょうか?
よろしければ知恵を貸していただきたく思います。
お礼
ご指摘にあったように、 for /r /d %【%】i in (*) do ren %%i\p???-a01_01.jpg p???-a01.jpg 【%】がひとつ足りなかったようです。 無事動作してくれました!ありがとうございます! やはり色々書き方があるのですね。 勉強します!