Windowsバッチ(*.bat)で、現在日付を取得する方法をまとめたので、ここにメモしておきます。
現在日付を取得する
現在日付は「%date%」で、現在日時は「%time%」で取得することが可能です。
sample1-1.bat:
@echo off
rem 現在日付
echo %date%
rem 現在時刻
echo %time%
結果:
c:\sample\bat\date>sample1-1.bat
2020/07/21
19:20:14.73
ハイフンを削除するなど、日付のフォーマットをしたい場合は、単純に取得した日付文字を置換することで実現します。
sample1-2.bat:
@echo off
rem yyyMMddへフォーマット
echo %date:~0,4%%date:~5,2%%date:~8,2%
rem hhmmssへフォーマット
echo %time:~0,2%%time:~3,2%%time:~6,2%
rem yyyMMddhhmmssへフォーマット
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
結果:
c:\sample\bat\date>sample1-2.bat
20200721
192403
20200721192403
0埋めの時間を取得する方法
上記のコードだけでは時間を出力する際、不都合が生じます。
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
上記のコマンドを実行する時、0時から9時の時間帯では文字数が1文字になってしまい、間にスペースが入る格好になってしまいます。
rem 19時の場合の出力結果
20200721193001
rem 9時の場合の出力結果
20200721 91030
上記の事象を解消するためには、あらかじめ取得した時間に対して「スペースを0で置換する」処理で解消することができます。
rem 0埋め
set tmptime=%time: =0%
echo %date:~0,4%%date:~5,2%%date:~8,2%%tmptime:~0,2%%tmptime:~3,2%%tmptime:~6,2%
結果:
rem 19時の場合の出力結果
20200721193001
rem 9時の場合の出力結果
20200721091030
以上です。