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