はじめに
バッチファイルを使って、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です
コードの詳しい解説
set year=%date:~0,4%
%date%
は現在の日付を文字列として保持する変数。
~0,4
という指定は、先頭から4文字を抜き出す操作にあたる。
これにより、year
には「2024」などの西暦年が格納される。-
set march=%date:~5,2%
次に、5文字目から2文字を取り出すことで、月(例:08)を取得する。
「march」という変数名は「month」としても構わないが、ここではあえて独自性を持たせた。 -
set day=%date:~8,2%
同様に、8文字目から2文字を取り出して、日(例:08)をセットする。
日付構成要素を分解して管理することで、自由度の高い出力フォーマットが実現する。 -
echo "本日は%year%%march%%day%です"
最後に、取得した各変数を連結して出力する。
結果として、「20240808」のような一意の年月日文字列が得られる。
注意点:日付形式の違いに注意
このコードは、%date%
が「YYYY/MM/DD」形式で提供されている前提に立っている。
しかし、Windowsのロケールやシステム設定によっては、「MM-DD-YYYY」や「DD.MM.YYYY」といった異なる形式になることもある。
この場合、文字列の抽出位置(~0,4
など)を調整しなければ、正確な日付が取得できなくなる。
まずは自身の環境で echo %date%
を実行し、日付の並び順を確認してからコードを調整してほしい。
まとめ
バッチファイルで日付を yyyymmdd
形式に整形する方法は、業務自動化やログ処理など、さまざまな場面で役立つ。
簡潔なスクリプトでも、日付処理においてはシステム依存の落とし穴が潜むため、検証と調整が欠かせない。
本記事のコードをベースに、自身の環境に合わせた日付整形処理を取り入れてみてほしい。
手軽さと柔軟性、その両方を手にできるはずだ。
コメント