人に聞けない痔の悩み、これでスッキリ >>

BAT処理で複数ファイルの名前変更を自動化させたいのですが、うまくいかず困っております。

[変更前ファイル名]
 0000001234_20140731.txt ・・・ 桁数固定のID+アンダーバー+年月日.txt

[変更後ファイル名]
 ID1234DATE20140731_0000001234_20140731.txt
  ・・・ "ID" + IDのゼロサプレス + "DATE" + 年月日+ アンダーバー +元ファイル名

これらの処理を同じディレクトリ内のファイル全てに行うにはどのようにすればよろしいでしょうか?
ご指導頂けますよう宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0

>0000001234_20140731.txt



これはファイル名のチェックはいらない?つまり
数値10ケタ+アンダースコア+数字8ケタ+ピリオド+txt
をチェックしないの?
下手したら手違いで変換後のファイル名を再度変更しようとしてひどい状況に
なりそうですが・・・

またゼロサプレスで処理するとファイル名の長さが変わってくるし
ファイル名でソートしてもグダグダになりますが大丈夫ですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング