以前某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%