Windowsのバッチファイルで年月日時分秒の文字列を取得する
バッチファイルで年月日時分秒の文字列を取得する
バッチファイルで年月日時分秒を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