ERRORLEVELで条件分岐してメッセージを表示するバッチ

バッチにおいて、ERRORLEVELで条件分岐してその結果をメッセージで表示する方法です。
※2018/08/13 加筆修正しました。


目次

  1. ERRORLEVELで条件分岐してメッセージを表示する
  2. if の比較演算子
  3. メッセージボックス関数

1. ERRORLEVELで条件分岐してメッセージを表示する

分岐したい場所に以下のようなコードを挿入して使います。

if %ERRORLEVEL% equ 0 (
    echo MsgBox "正常実行メッセージ", vbInformation, "正常実行タイトル" > %TEMP%\tmpMsgBox.vbs
) else if %ERRORLEVEL% equ 1 (
    rem ERRORLEVELの数字に応じて設定
    echo MsgBox "エラーメッセージ", vbExclamation, "エラータイトル" > %TEMP%\tmpMsgBox.vbs
) else if %ERRORLEVEL% equ 2 (
    echo MsgBox "クエスチョンメッセージ", vbQuestion, "クエスチョンタイトル" > %TEMP%\tmpMsgBox.vbs
) else (
    echo MsgBox "予期しないエラーが発生しました。", vbCritical, "予期しないエラー" > %TEMP%\tmpMsgBox.vbs
)

%TEMP%\tmpMsgBox.vbs
del %TEMP%\tmpMsgBox.vbs

バッチにはメッセージボックスコマンドがありませんので、VBSを用います。
「%ERRORLEVEL%」でエラーレベルの数値を取得して、それをifの比較演算子を使って分岐しています。
VBSは「echo」を使って「MsgBox」以下の文字列を「%TEMP%\tmpMsgBox.vbs」に出力しています。このVBSを実行すると、MsgBox関数によってメッセージボックスが表示されます。
実行したら「del」コマンドでそのVBSを削除しています。


2. if の比較演算子

比較演算子には以下の種類があります。

  • equ … 等しい
  • neq … 等しくない
  • lss … より小さい
  • leq … 以下
  • gtr … より大きい
  • geq … 以上

数値が等しいかどうかの判定には「==」も使えます。「==」は文字列の比較に使うことが多いですが、両方とも数字だけを含む場合は文字列が数値に変換され、数値の比較が行われます。
ただし、数値が等しい場合以外は比較演算子の方が汎用性は高いので、そちらを使う方が良いでしょう。


3. メッセージボックス関数

3-1. アイコンの種類

メッセージボックスのアイコンには以下の種類があります。文字列で指定しても良いですし、括弧書きで書いた数字で指定することもできます。

vbCritical (16) … 警告メッセージ

vbQuestion (32) … 問い合わせメッセージ

vbExclamation (48) … 注意メッセージ

vbInformation (64) … 情報メッセージ

数字で指定する場合は以下のように書きます。

echo MsgBox "エラーメッセージ", 48, "エラータイトル" > %TEMP%\tmpMsgBox.vbs

この関数についての詳細は、Microsoftの MsgBox 関数 に出ています。数字での指定もそこから引用しました。
バッチでこの関数の戻り値を取得できないわけではありませんが、そこまでやるような処理なら最初からVBSで書いた方が良いかも。

3-2. 関数式

参考までに、式と設定値等の抜粋も載せておきます。

MsgBox(prompt[, buttons][, title][, helpfile, context])

バッチに書くときは、括弧を付けないでおきましょう。

3-3. buttons の設定値

分類定数内容
ボタンの種類vbOKOnly0[OK]
vbOKCancel1[OK] [キャンセル]
vbAbortRetryIgnore2[中止] [再試行] [無視]
vbYesNoCancel3[はい] [いいえ] [キャンセル]
vbYesNo4[はい] [いいえ]
vbRetryCancel5[再試行] [キャンセル]
アイコンvbCritical16警告メッセージ
vbQuestion32問い合わせメッセージ
vbExclamation48注意メッセージ
vbInformation64情報メッセージ
標準ボタンvbDefaultButton10第1ボタン
vbDefaultButton2256第2ボタン
vbDefaultButton3512第3ボタン

「buttons」の部分に各分類の値の合計を指定することで、表示されるボタンやアイコン等を制御することができます。

3-4. 戻り値

定数選択されたボタン
vbOK1[OK]
vbCancel2[キャンセル]
vbAbort3[中止]
vbRetry4[再試行]
vbIgnore5[無視]
vbYes6[はい]
vbNo7[いいえ]

Leave a comment

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

12 + twenty =