[Windows] 現在日時を埋め込んだファイル名のファイルを出力する | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

バッチファイル等の中で、現在日時を埋め込んだファイル名でファイルを出力したい場合、以下のような方法で実現することができます。


まず、現在日付と現在時刻を環境変数 DATE_TIME にセットします。

C:\TEMP>set DATE_TIME=%DATE% %TIME%

すると、環境変数 DATE_TIME に言語に応じたフォーマットの日時がセットされます。

C:\TEMP>echo %DATE_TIME%
2009/11/05 20:17:37.06

そして、この環境変数 DATE_TIME から文字位置を指定して年、月、日、時、分、秒を切り出してファイル名を編集し、ファイル出力を行います。

C:\TEMP>echo test > %DATE_TIME:~0,4%%DATE_TIME:~5,2%%DATE_TIME:~8,2%%DATE_TIME:~11,2%%DATE_TIME:~14,2%%DATE_TIME:~17,2%.log

すると、以下のように日時が埋め込まれたファイル名でファイルが出力されます。

C:\TEMP>dir /B
20091105201737.log

C:\TEMP>type 20091105201737.log
test

上記の例では、環境変数 DATE と TIME を一旦環境変数 DATE_TIME にセットしていますが、これはこのようにすると複数のファイルを出力しても同じ日時を埋め込むことができるためで、特にそのような要件がなければ環境変数 DATE と TIME を直接利用しても構わないかと思います。