バッチファイルでイベントログを出力するときに使うeventcreateコマンドですが、/d
オプションでメッセージ付与することができます。
これを改行入りで出力してみます。
バッチファイル
eventcreate.bat
setlocal enabledelayedexpansion
set CRLF=^
eventcreate /id 100 /l application /t information /d "テスト!CRLF!改行"
実行結果
管理者で実行します。
メッセージが改行されました。
解説
setlocal enabledelayedexpansion
setlocal enabledelayedexpansion
を実行することで遅延環境変数展開を有効にします。
遅延環境変数とは、バッチファイル独特の考え方で、変数を読み込むタイミングを遅らせることです。
通常は行に入った時に変数が展開されますが、遅延環境変数を使うとコマンドを読み込んだタイミングで変数を展開します。
ここでは改行文字を遅延環境変数として展開するために有効化しています。
eventcreate /d
オプションで改行文字の変数を展開するときは!変数名!
というように%
ではなく!
で括ります。
set CRLF=^
CRLFという環境変数を宣言して、改行文字を変数に入れています。
^
はバッチファイルのエスケープシーケンスとして機能する記号です。
ハットの後の改行文字を変数に入れてさらに改行でコマンドを実行しているイメージになります。
このため、set CRLF=^
の後ろには改行を2行続けないと変数に改行文字が入らないため注意してください。