Windowsのバッチファイルで年月日時分秒の文字列を取得する

toc目次

バッチファイルで年月日時分秒の文字列を取得する

バッチファイルで年月日時分秒をyyyymmddhhmmss形式で取得するサンプルです。
ログファイルの名前などに使用できます。

@echo off

REM NOWに現在の日時をyyyymmddhhmmss形式で設定
set T=%time: =0%
set NOW=%date:/=%%T:~0,2%%T:~3,2%%T:~6,2%

REM NOWを表示する
echo %NOW%

pause
20240214123456

解説

環境変数dateには現在のシステム日付が格納されています。

> echo %date%
2024/02/14

日付は「年/月/日」で出力されます。

%<変数>:<対象文字列>=<置換文字列>%」で置換が行えるので、「%date:/=%」として/を空文字に変換することでyyyymmdd形式の文字列が取得できます。

> echo %date:/=%
20240214

環境変数timeには現在のシステム時刻が格納されています。

> echo %time%
12:34:56.00

時刻は「時:分:秒.ミリ秒」で出力されます。

時刻は0時~9時の場合、先頭にスペースが挿入されるので、一度変数(T)に代入し
%T: =0%」でスペースを0に変換します。

> set T=%time%

> echo %T%
 1:23:45.00

> set T=%T: =0%

> echo %T%
01:23:45.00

%<変数>:~m,n%」でm文字目(開始は0)から、n文字分文字列を抽出できるので「%T:~0,2%」、「%T:~3,2%」、「%T:~6,2%」で時、分、秒を取得できます。

それらを結合するとhhmmss形式の文字列が取得できます。

> echo %T:~0,2%%T:~3,2%%T:~6,2%
012345