Batchで日付(yyyymmdd)を取得する方法|サンプルコードと一緒に解説

プログラミング

はじめに

バッチファイルを使って、yyyymmdd という形式の日付を取得したい。そんなシーンに直面することは少なくない。
業務の自動化やログ管理、日付ごとのファイル出力など、多くの用途で求められるこの処理。
本記事では、バッチファイルによって現在の日付を取得し、任意のフォーマットに変換する具体的な方法を、コード付きでわかりやすく解説する。

スポンサーリンク
スポンサーリンク

バッチファイルで日付を取得する方法

バッチファイルとは、Windows上でコマンドを順に実行するためのスクリプトファイルのこと。
中でも「日付の取得と整形」は、バッチで扱う定番タスクのひとつといえる。
以下のコードは、システム日付を抽出し、yyyymmdd 形式に加工する手順を示したものだ。

set year=%date:~0,4%
set march=%date:~5,2%
set day=%date:~8,2%

echo "本日は%date%です"
echo "本日は%year%%march%%day%です"

このコードを実行すると、例えば以下のように表示される。(例:2024年8月8日の場合)

本日は2024/08/08です
本日は20240808です 

コードの詳しい解説

  1. set year=%date:~0,4%
    %date% は現在の日付を文字列として保持する変数。
    ~0,4 という指定は、先頭から4文字を抜き出す操作にあたる。
    これにより、year には「2024」などの西暦年が格納される。
  2. set march=%date:~5,2%
    次に、5文字目から2文字を取り出すことで、月(例:08)を取得する。
    「march」という変数名は「month」としても構わないが、ここではあえて独自性を持たせた。

  3. set day=%date:~8,2%
    同様に、8文字目から2文字を取り出して、日(例:08)をセットする。
    日付構成要素を分解して管理することで、自由度の高い出力フォーマットが実現する。

  4. echo "本日は%year%%march%%day%です"
    最後に、取得した各変数を連結して出力する。
    結果として、「20240808」のような一意の年月日文字列が得られる。

注意点:日付形式の違いに注意

このコードは、%date% が「YYYY/MM/DD」形式で提供されている前提に立っている。
しかし、Windowsのロケールやシステム設定によっては、「MM-DD-YYYY」や「DD.MM.YYYY」といった異なる形式になることもある。

この場合、文字列の抽出位置(~0,4など)を調整しなければ、正確な日付が取得できなくなる。
まずは自身の環境で echo %date% を実行し、日付の並び順を確認してからコードを調整してほしい。


まとめ

バッチファイルで日付を yyyymmdd 形式に整形する方法は、業務自動化やログ処理など、さまざまな場面で役立つ。
簡潔なスクリプトでも、日付処理においてはシステム依存の落とし穴が潜むため、検証と調整が欠かせない。

本記事のコードをベースに、自身の環境に合わせた日付整形処理を取り入れてみてほしい。
手軽さと柔軟性、その両方を手にできるはずだ。

コメント