(1) バッチでログファイルを出力+ファイル名に日時間を付与する
(1-1) 構文
(1-2) サンプルプログラム
(1-3) 簡単な操作手順動画
(1) バッチでログファイルを出力+ファイル名に日時間を付与する
バッチファイルでログを出力する際に、ログファイル名に日付と時刻を付与して出力するバッチプログラムをご紹介します。
(1-1) 構文
①ログファイル生成
set LOG_PATH=[ログの出力パス(任意のパス)] set yyyyMMdd=%date:/=% set hhmmss=%time::=% set hhmmss=%hhmmss:~0,6% set logfile=%LOG_PATH%%yyyyMMdd%_%hhmmss%.log
(説明)
1行目で「LOG_PATH」という変数にログファイルの格納パスを指定しています。2行目~4行目はログファイルに付与するための日付(yyyymmdd形式)や時刻(hhmmss形式)を作成しています。この日付や時刻の取得行について、もし詳しく把握したい方は以下の記事も併せてご覧下さい。
②メッセージ出力
上記で作成したログファイル内にメッセージを出力するための記述です。
echo %date:/=-% %time:.=,%0 %[メッセージ変数]% >> "%[ログファイルパス]%" 2>&1
(説明)
echoで日付(%date:/=-%)や時刻(%time:.=,%0)に加えて、「メッセージ変数」の値を出力しています。出力先は「>>」の後で指定している「ログファイルパス」に出力します。また最後の「2>&1」は標準エラー出力(2)を標準出力にリダイレクトします。
加えて「echo (中略) >> “[ログファイルパス]”%」で標準出力の結果をログファイルにリダイレクトしています。
(1-2) サンプルプログラム
(サンプルプログラム)
@echo off rem SETLOCAL ENABLEDELAYEDEXPANSION rem ### ログファイルに出力する各種メッセージを定義(開始、処理中、終了) set Message_START=Logging task START. set Message_Processing=[何かの処理]が実行されました set Message_END=Logging task END. rem ### ログファイルの生成パスを定義 set LOG_PATH=C:\Temp2\ rem ### yyyyMMdd形式に日付を加工し、変数に代入 set yyyyMMdd=%date:/=% set hhmmss=%time::=% rem ### hhmmss形式に日付を加工し、変数に代入 set hhmmss=%hhmmss:~0,6% set logfile=%LOG_PATH%%yyyyMMdd%_%hhmmss%.log rem ### 開始ログ出力 echo %date:/=-% %time:.=,%0 %Message_START% >> "%logfile%" 2>&1 rem ### 処理結果ログ出力 echo 'Result of Process': %Message_Processing% >> "%logfile%" 2>&1 rem ### 終了ログ出力 echo %date:/=-% %time:.=,%0 %Message_END% >> "%logfile%" 2>&1 exit 0
(図121)
(図122)
(図123)操作動画(短編)
バッチ実行~ログファイルの出力部分を簡単な動画にしています。
(1-3) 簡単な操作手順動画
バッチファイルを作り、上記のサンプルプログラムをコピーして、コマンドプロンプトで実行してログを確認するまでの一連の流れを簡単な動画にしています(※上記の動画の前後を足した版です)。