Y子です。
土日ってすぐに終わっちゃいますね。
今日は、過去2回の合わせ技で、ファイル名を簡単に変更するバッチファイルを作ってみました。
つまり、なにかファイルをドロップすると、ファイル名に現在日時を付加するようリネームしてくれるバッチファイルです。
たとえば、「test.txt
」が「test_20210402_094617.txt
」になります。
filedrop_ren_curdate.bat
@echo off
rem 引数がない場合は終了する
if "%~1"=="" (
echo 引数がありません
pause
exit /b
)
rem 日付「20210402」形式
set str_date=%date:~0,4%%date:~5,2%%date:~8%
rem 時刻「094617」形式
set str_time=%time: =0%
set str_time=%str_time:~0,2%%str_time:~3,2%%str_time:~6,2%
rem 変更前のファイル名(フルパス)「C:\work dir\test.txt」
set str_oldfile=%~1
rem ファイル名分割…拡張子なし「test」と拡張子のみ「.txt」
set str_new_fn=%~n1
set str_new_ex=%~x1
rem 変更後のファイル名(ファイル名のみ)「test_20210402_094617.txt」
set str_newfile=%str_new_fn%_%str_date%_%str_time%%str_new_ex%
ren "%str_oldfile%" "%str_newfile%"
echo ファイル名を「%str_newfile%」に変更しました。
pause
リネームコマンドのren
やrename
は、第2引数にフォルダ名を含んではだめなんですね。
なので、str_new_fn
には「%~dpn1
」ではなく「%~n1
」を代入しています。
リネームの成否の判定をしていないので、「変更しました」と出力しているのはちょっとウソですね(^-^;
まあいっか!
明日は月曜だー。わー。
【2021/04/05 09:00 追記】
set str_oldfile=%1
だったところにチルダを入れました。そうしないと、ファイル名にスペースがある場合にエラーになってました。