Windowsバッチ

Windowsバッチで現在日付を取得する / フォーマットする方法(yyyMMddhhmmss)

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

以上です。

-Windowsバッチ