Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Windows Server バッチ処理 (Batch Scripts)

Windowsバッチでイベントログに出力する方法+オプション説明表・サンプルPGも掲載

投稿日:2020年11月7日 更新日:

<目次>

(1) Windowsバッチでイベントログに出力する方法
 (1-1) 構文
 (1-2) サンプルプログラム
 (1-3) 少し応用:ERRORLEVELの値に応じてログ出力

(1) Windowsバッチでイベントログに出力する方法

(1-1) 構文

(構文)
イベントログに書き出しするコマンド「eventcreate」を使います。オプションは最低限必須のもののみ記載しています。

eventcreate /id [イベントID] /l [ログの名前] /t [ログのレベル] /d "[説明文]"

 

(構文説明)
eventcreateの後に指定しているオプションの説明です。

rem オプション#1「/id」=項目「イベントID」に表示する値 ⇒[イベントID] 
rem オプション#2「/l」=項目「ログの名前」に表示する値 ⇒[ログの名前]
rem オプション#3「/t」=項目「レベル」に表示する値 ⇒[ログのレベル]
rem オプション#4「/d」=全般タブ説明欄に表示する値 ⇒[説明文]

 

(構文実例)
上記構文にサンプルの値を入れたものが以下です。これをコマンドプロンプトから実行すればイベントログに書き出しができます。

rem (例)
eventcreate /id 999 /l application /t information /d "Test Message"

 

(参考)その他オプション

オプション 英語名称 説明 備考
/id id 項目「イベントID」に表示する値 1~1000の数字
/l logname 項目「ログの名前」に表示する値 イベントログを生成する分類を指定します(「APPLICATION」か「SYSTEM」.)
/t type 項目「レベル」に表示する値 イベントの種類を指定します。種類は以下の4つがあります。
SUCCESS
ERROR
WARNING
INFORMATION」
/d description 全般タブ説明欄に表示する値  
/so source 項目「ソース」に表示する値 イベントに使うソース(イベントを生成するアプリやコンポーネントを意味する名前)を指定します。
※デフォルト値=EventCreate
/s system 接続するリモートホストを指定。  
/u user イベント生成するユーザ名を指定。  
/p password イベント生成するユーザのパスワードを指定。  

目次にもどる

(1-2) サンプルプログラム

イベントログを出力するプログラムです。メッセージ変数を定義し、その変数の内容を説明欄に出力しています。

(サンプルプログラム)

rem 実行したコマンドは標準出力に表示しないようにする
@echo off

rem イベントログの説明欄に表示するメッセージを定義
set I_TEST=This is sample message of eventcreate

rem イベントログに書き出し
eventcreate /id 999 /l application /t information /d "%I_TEST%"

(図121)プログラム実行結果

目次にもどる

(1-3) 少し応用:ERRORLEVELの値に応じてログ出力

上で紹介したサンプルプログラムを少しだけ応用させて、「何かの処理」を実行した結果が「エラーの場合」にイベントログを出力するという簡単な「if分岐」のバッチプログラムをご紹介します。

(サンプルプログラム)

@echo off

set I_TEST=This is sample message of eventcreate

rem ①何かの処理(適当にエラーになるように)⇒ 処理内容は(補足1)を参照
set word=STATE 1 STOPPED
echo %word% | findstr RUNNING > nul 2>&1

rem ②ERRORLEVELの値チェック
rem ③正常終了(ERRORLEVEL=0)ならOKにジャンプ(イベントログは生成しない)
if %ERRORLEVEL% equ 0 goto OK
	
	rem ④もし正常終了以外ならイベントログに情報を出力する
	eventcreate /id 999 /l application /t information /d "%I_TEST%"

	rem 終了コード「999」を指定してexit。「/b」オプションでバッチを終了してコマンドプロンプトに制御を戻す
	exit /b 999
:OK

(補足1)「①何かの処理」の説明
この処理は分岐の効果を実感してもらうため、意図的に必ずエラーになる処理を書いて、後ろの分岐でOKに飛ばないようにしています。
具体的には変数wordに適当な文字列「STATE 1 STOPPED」を代入し、そのwordに対してfindstrコマンドで「RUNNING」という文言を探します。この結果は必ずfalseになるので、次のERRORLEVELのチェックで0以外の値になります(エラー扱い)。
ご参考ですが、最後の「> nul」で標準出力をnullにリダイレクトし、「2>&1」でエラー出力を標準出力にリダイレクトします。

(図131)

(図132)

(操作動画)
最初にERRORLEVELが「0」である事を確認した後に、サンプルプログラムを実行するとイベントログを出力してERRORLEVELが「999」に書き変わる様子を見る事ができます。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Windows Server, バッチ処理 (Batch Scripts)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Windowsのバッチで日付(yyyymmdd形式)や時刻(hhmmss形式)を取得する方法

<目次> (1) Windowsのバッチで日付(yyyymmdd形式)や時刻(hhmmss形式)を取得する方法  (1-1) バッチで日付を取得する  (1-2) バッチで日付を取得する(yyyymm …

Windows10のアップグレード後に画面の明るさが調整できなくなる問題の対処法について

<目次> (1) Windows10のアップグレード後に画面の明るさが調整できなくなる問題の対処法について  (1-1) 事象の概要  (1-2) 原因  (1-3) 対策 (1) Windows10 …

バッチ処理のパイプ「| の使い方が誤っています。」エラーの原因と対処について

<目次> (1) バッチ処理のパイプ「| の使い方が誤っています。」エラーの原因と対処について  (1-1) エラー概要  (1-2) エラー原因  (1-3) エラー対処 (1) バッチ処理のパイプ …

バッチでファイルパスやファイル名を取得する方法

<目次> (1) バッチでファイルパスやファイル名を取得する方法  (1-1) 構文  (1-2) コマンドのオプションについて  (1-3) サンプルプログラム 「for %%f in (&#822 …

WindowsServerでユーザーにリモートデスクトップ接続を許可する方法

<目次> (1) WindowsServerでユーザーにリモートデスクトップ接続を許可する方法  (1-1) 設定の手順  (1-2) 備考 (1) WindowsServerでユーザーにリモートデス …

  • English (United States)
  • 日本語
Top