バッチファイルでログのファイル名に日付・時間をつける方法

日付:YYYYMMDD(年月日)形式を設定その1

forコマンドを使う

 for /F "eol=;tokens=1,2,3,4*delims=/, " %i in ('date /t') DO SET YYYYMMDD=%i%j%k
実行結果
D:\workspace\batch_SandBox\>for /F "eol=;tokens=1,2,3,4*delims=/, " %i in ('date /t') DO SET YYYYMMDD=%i
%j%k

D:\workspace\batch_SandBox\>SET YYYYMMDD=20101203

D:\workspace\batch_SandBox\>set YY
YYYYMMDD=20101203

日付:YYYYMMDD(年月日)形式を設定その2

以下でもできる。

set YYYY=%Date:~0,4%
set MM=%Date:~5,2%
set DD=%Date:~8,2%
set YYYYMMDD=%Date:~0,4%%Date:~5,2%%Date:~8,2%
実行結果
D:\workspace\batch_SandBox\>set YYYY=%Date:~0,4%

D:\workspace\batch_SandBox\>set MM=%Date:~5,2%

D:\workspace\batch_SandBox\>set DD=%Date:~8,2%

D:\workspace\batch_SandBox\>set YY
YYYY=2010

D:\workspace\batch_SandBox\>set MM
MM=12

D:\workspace\batch_SandBox\>set DD
DD=03

時間:HHMM(時分)形式を設定

for /F "eol=;tokens=1,2,3*delims=:, " %i in ('time /t') DO SET HHMM=%i%j
実行結果
D:\workspace\batch_SandBox\>for /F "eol=;tokens=1,2,3*delims=:, " %i in ('time /t') DO SET HHMM=%i%j

D:\workspace\batch_SandBox\>SET HHMM=2337

D:\workspace\batch_SandBox\>set HH
HHMM=2337

ログ出力

設定した環境変数をファイル名に指定して出力する。

echo test >%YYYYMMDD%%HHMM%.log
出力例
D:\workspace\batch_SandBox\>echo test >%YYYYMMDD%%HHMM%.log
D:\workspace\batch_SandBox\>type 201012032337.log
test

バッチファイルで実行するときの注意

バッチファイルで実行する場合には、上記の例の%を%%にする必要がある。

REM YYMMDDHHMMの形式の形式を設定する
@ECHO OFF
For /F "eol=;tokens=1,2,3,4*delims=/, " %%i in ('date /t') DO SET YYYYMMDD=%%i%%j%%k
For /F "eol=;tokens=1,2,3*delims=:, " %%i in ('time /t') DO SET HHMM=%%i%%j
set YYYYMMDDHHMM=%YYYYMMDD%%HHMM%
echo test >%YYYYMMDDHHMM%


Windows コマンドプロンプト ポケットリファレンス
4774149543