バッチファイルで日付/時間をファイル名につけて、ファイルをコピーする

2021-07-13

ファイルに(YYMMDD_HHMMSS)のような日付/時間をつけてコピーする

Windowsのバッチファイルでファイルをコピーする時に、日付と時刻をファイル名につけてコピーするには、「date」や「time」などの変数して、その中の値を取得します

C:\>echo %date%
2020/05/05

C:\>echo %time%
13:24:45.77

以下の場合では、「set time_tmp=%time: =0%」で「3:30」のような一桁の数字を場合は、「03:30」のように、空白の場合は0に変換しています。あとは、必要な日付/時間の値を取得しています

echo off
set time_tmp=%time: =0%

echo %date%
set date_now=%date:~0,4%%date:~5,2%%date:~8,2%

echo %time%
set time_now=%time_tmp:~0,2%%time_tmp:~3,2%%time_tmp:~6,2%

echo %date_now%
echo %time_now%

pause

【出力結果】

C:\>echo off
2020/05/05
13:32:47.82
20200505
133247

上記の例で日付/時刻を取得できているので、あとは「copy」コマンドでファイルをコピーすれば、日付/時刻をファイル名につけたファイルがコピーできます。

「filename」・「SourceFile」・「TargetFile」の変数を使用する環境によって変更していただけば、OKかと思います

setlocal
echo off
set time_tmp=%time: =0%
set DateNow=%date:~0,4%%date:~5,2%%date:~8,2%
set TimeNow=%time_tmp:~0,2%%time_tmp:~3,2%%time_tmp:~6,2%

set filename=test_%DateNow%_%TimeNow%.txt
   
set SourceFile=C:\Users\admin\test\test.txt
set TargetFile=D:\Backup\%filename%
copy "%SourceFile%" "%TargetFile%"

PAUSE
endlocal