【バッチファイル】ログの出力方法と日時取得/ログファイル名に日時取得


1.ログ出力と日時取得

 今回は、バッチファイルにおけるログの出力方法についてまとめたいと思います。バッチファイルをタスクスケジューラーに設定して自動で実行する場合、その実行結果や処理途中の状況などを把握するためにもログの出力は必要です。また、処理をした日時の出力方法も一緒にご紹介します。

2.日時の取得

@echo off

rem 日付取得
echo %date%

rem 時間取得
echo %time%

pause

出力画面はこちらです。

%date%
「yyyy/mm/dd」形式で出力されます

%time%
「hh:mm:ss.ff」形式で出力されます

2.ログの出力

 ログの出力方法は、出力先のパスと出力するログファイル名を指定することで出来ます。(パスを指定せずログファイル名のみ指定した場合は、バッチファイルと同じ階層に出力されます)
 また、出力するログを上書き更新するタイプ(>)と追記するタイプ(>>)があるので用途に合わせてどちらを使用するか決めましょう。
 例として、デスクトップに「datetime.log」という現在の日時を記録するログファイルを2回実行して出力します。
【上書き更新タイプ】>

@echo off

rem 上書き更新タイプ
echo %date% %time% > C:\Users\デスクトップ\datetime.log

pause

[1回目の実行]

[2回目の実行]

1回目に出力した日時は上書きされます。

【追記タイプ】>>

@echo off

rem 追記タイプ
echo %date% %time% >> C:\Users\デスクトップ\datetime.log

pause

[1回目の実行]

[2回目の実行]

1回目に出力した日時は上書きされずに、2回目に実行した日時が追記されます。

3.ログファイル名に実行日時を取得する

 ログファイルを日毎に出力したい場合は、ファイル名を実行した日時で作成することもできます。(例:20220225.log など)
 方法はファイル名に%date%や%time%をつければ良いのですが、この2つのコマンドで取得される値には、ファイル名で使用できない「/」や「:」の記号が使用されている為、このまま実行しても正常にバッチの処理は出来ません。
 そこで、「/」や「:」の記号を取り除いて数字だけを抽出して取得する方法があります。

@echo off

rem ファイル名に実行日付を取得するバッチ
echo %date% > C:\Users\デスクトップ\%date:~0,4%%date:~5,2%%date:~8,2%.log

pause

%date%で取得される値
「2022/02/25」
%date:~0,4%
→0文字目から4文字取得
%date:~5,2%
→5文字目から2文字取得
%date:~8,2%
→8文字目から2文字取得

[実行結果]

 上記のコマンドを使用することによって、ファイル名に日時の取得をすることが出来ます。時刻の取得も同じ方法で出来ます。