- ベストアンサー
BAT処理でファイル名の変更
BAT処理で複数ファイルの名前変更を自動化させたいのですが、うまくいかず困っております。 [変更前ファイル名] 0000001234_20140731.txt ・・・ 桁数固定のID+アンダーバー+年月日.txt [変更後ファイル名] ID1234DATE20140731_0000001234_20140731.txt ・・・ "ID" + IDのゼロサプレス + "DATE" + 年月日+ アンダーバー +元ファイル名 これらの処理を同じディレクトリ内のファイル全てに行うにはどのようにすればよろしいでしょうか? ご指導頂けますよう宜しくお願い致します。
- みんなの回答 (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)
>0000001234_20140731.txt これはファイル名のチェックはいらない?つまり 数値10ケタ+アンダースコア+数字8ケタ+ピリオド+txt をチェックしないの? 下手したら手違いで変換後のファイル名を再度変更しようとしてひどい状況に なりそうですが・・・ またゼロサプレスで処理するとファイル名の長さが変わってくるし ファイル名でソートしてもグダグダになりますが大丈夫ですか?