現在の日時文字列を手軽に取得する

以前某IT系サイトを見ていると、年月日をYYYYMMDD形式で取得する場合、

set YYYYMMDD=%Date:~0,4%%Date:~5,2%%Date:~8,2%
echo %YYYYMMDD%

のようにして取得する。
というような事が書かれていて、正直「めんどくせぇなぁ…」と思っていたのだが、目の覚めるような代替案を発見。

set YYYYMMDD=%DATE:/=%
echo %YYYYMMDD%

これでOK。DATEで出力される文字列から/を置換で除去してしまう、という方法。 ちなみにTIMEでも“%TIME::=%“のようにすると:を除去した文字列にすることが可能だが、TIMEの場合は時分秒の後ろにミリ秒が付いたり、時の部分が0~9の間は一桁減るなど、別な部分で気をつける必要がある。 ミリ秒が残って良いなら、こんな感じで午前中に発生する行頭の空白文字を除去(0に置換)できる。

SET DUMMY=%TIME::=%
SET HHMMSS=%DUMMY: =0%
ECHO %HHMMSS%

さらにミリ秒も除去するなら、上記のHHMMSSの値を更に前方6文字切り出してやれば良い。

SET DUMMY1=%TIME::=%
SET DUMMY2=%DUMMY: =0%
SET HHMMSS=%DUMMY2:~0,6%
ECHO %HHMMSS%