バッチ処理を作成するときに、ログファイル名やバックアップファイル名に日付を付与するケースはよくあります。その際「20250913」のように 西暦8桁(YYYYMMDD形式) でゼロ埋めされた日付を出力したいことがあります。
この記事では、Windowsバッチでゼロ埋めした日付を取得する方法を紹介します。
基本的な考え方
Windowsバッチでは %date%
変数を使うことで、現在の日付を取得できます。ただし環境によって表示形式が異なり、例えば以下のようになります。
-
日本語ロケール(Windows 10/11 既定)
-
英語ロケール
このため、文字列の位置を指定して切り出す必要があります。
実用例:西暦8桁+月日2桁のゼロ埋め
以下のバッチスクリプトでは、YYYYMMDD
形式で日付を取得します。
実行結果(2025年9月13日の場合)
応用:時刻と組み合わせて使う
ファイル名などで「日付+時刻」を付けたい場合は、%time%
も組み合わせられます。
1 |
@echo off set YMD=%date:~0,4%%date:~5,2%%date:~8,2% set HMS=%time:~0,2%%time:~3,2%%time:~6,2% REM 時刻の先頭スペースを除去(1桁時間帯対策) if "%time:~0,1%"==" " set HMS=0%time:~1,1%%time:~3,2%%time:~6,2% echo %YMD%_%HMS% |
実行例
ロケールに依存しない方法
環境によって %date%
のフォーマットが変わるとバッチが動作しなくなることがあります。
その場合、wmic
を使うとロケール非依存で日付を取得できます。
実行結果
まとめ
-
%date%
を切り出す方法は簡単だがロケール依存。 -
確実性を求めるなら
wmic
を使うのがおすすめ。 -
日付はログやバックアップのファイル名に利用すると便利。
バッチで日付をゼロ埋めして扱うと、ファイルの並び順も自然になり管理がしやすくなります。
ぜひ日常の運用バッチに取り入れてみてください。