バッチファイルにドロップして、ファイル名に更新日時を付加する


Y子です。
朝活?してみます。

昨日(「バッチファイルにドロップして、ファイル名に現在日時を付加する」)の応用で、「現在日時」ではなく「ファイルの更新日時」を付加してみます。

filedrop_ren_upddate.bat
@echo off

rem 引数がない場合は終了する
if "%~1"=="" (
  echo 引数がありません
  pause
  exit /b
)

rem ファイルの更新日時「2021/04/02 09:46」形式
set str_datetime=%~t1
set str_datetime=%str_datetime:/=%
set str_datetime=%str_datetime::=%
set str_datetime=%str_datetime: =_%

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_0946.txt」
set str_newfile=%str_new_fn%_%str_datetime%%str_new_ex%

ren "%str_oldfile%" "%str_newfile%"
echo ファイル名を「%str_newfile%」に変更しました。

pause

「更新日時」と違って、「秒」まで取得できないようです。
でも、リネームの需要があるのは、「現在日時」より「更新日時」な気がします。(わたし個人の感想ですけど!)

ではまた!

【2021/04/05 09:00 追記】
set str_oldfile=%1 だったところにチルダを入れました。そうしないと、ファイル名にスペースがある場合にエラーになってました。