• ベストアンサー

BAT処理でファイル名の変更

BAT処理で複数ファイルの名前変更を自動化させたいのですが、うまくいかず困っております。 [変更前ファイル名]  0000001234_20140731.txt ・・・ 桁数固定のID+アンダーバー+年月日.txt [変更後ファイル名]  ID1234DATE20140731_0000001234_20140731.txt   ・・・ "ID" + IDのゼロサプレス + "DATE" + 年月日+ アンダーバー +元ファイル名 これらの処理を同じディレクトリ内のファイル全てに行うにはどのようにすればよろしいでしょうか? ご指導頂けますよう宜しくお願い致します。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

先頭の桁数固定は10桁と言うことですよね。 pushd ディレクトリ for %%A in (??????????_????????.txt) do call :sub %%A pause exit /b :sub set A=%1 set ID0=X%A:~0,10% :delzero set ID=%ID0:X0=X% if %ID% neq %ID0% set ID0=%ID%&goto delzero set ID=%ID:X=% set YMD=%A:~11,8% ren %A% ID%ID%DATE%YMD%_%A% goto :EOF

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>0000001234_20140731.txt これはファイル名のチェックはいらない?つまり 数値10ケタ+アンダースコア+数字8ケタ+ピリオド+txt をチェックしないの? 下手したら手違いで変換後のファイル名を再度変更しようとしてひどい状況に なりそうですが・・・ またゼロサプレスで処理するとファイル名の長さが変わってくるし ファイル名でソートしてもグダグダになりますが大丈夫ですか?

関連するQ&A