質問: いつもお世話になっております。 バッチファイルで複数ファイルのリネームに関してご質問させて頂きます。 バッチファイルで階層の深さの異なる複数のフォルダ内にあるPDFファイルに対して リネーム処理を行っておりました PDFファイルが30ファイルを超えるフォルダのみリネームが何度も繰り返され意図したファイル名になりません ・リネーム対象のPDFファイルはファイル名15~19文字 ・リネームするファイルファイル数は各フォルダごとでマチマチ(最少0ファイル~最大3000ファイル程) ・リネームはファイルにフォルダ名(半角英字3文字)とアンダーバーを文頭に付ける ・リネームの規則は 管理ID10ケタ+用途(日本語).pdf ⇒ AAA(英文字3つ)+管理ID10ケタ+用途(日本語).pdf 例)1234567890_営業.pdf ⇒ AAA_1234567890_営業.pdf ``` forfiles /P %対象フォルダ%\AAA /m *.pdf /s /c "cmd /c REN @path AAA_@file" ``` リネームに失敗したファイル名は下記のようになります。 AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_AAA_(以下略)_1234567890_営業.pdf お手数をおかけいたしますが、ご教授頂けますと幸いでございます。 何卒よろしくお願いいたします。
回答: リネーム後のファイル名も*.pdfなので、forfilesが拾っちゃいます。 小さいフォルダで上手く行くのはバッファに入っているからでしょう。 リネームはまとめて実行しましょう。 ``` forfiles /P %対象フォルダ%\AAA /m *.pdf /s /c "cmd /c echo REN @path AAA_@file" > xren.bat xren.bat ```