バッチにおいて、ERRORLEVELで条件分岐してその結果をメッセージで表示する方法です。
※2018/08/13 加筆修正しました。
目次
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 の設定値
分類 | 定数 | 値 | 内容 |
---|---|---|---|
ボタンの種類 | vbOKOnly | 0 | [OK] |
vbOKCancel | 1 | [OK] [キャンセル] | |
vbAbortRetryIgnore | 2 | [中止] [再試行] [無視] | |
vbYesNoCancel | 3 | [はい] [いいえ] [キャンセル] | |
vbYesNo | 4 | [はい] [いいえ] | |
vbRetryCancel | 5 | [再試行] [キャンセル] | |
アイコン | vbCritical | 16 | 警告メッセージ |
vbQuestion | 32 | 問い合わせメッセージ | |
vbExclamation | 48 | 注意メッセージ | |
vbInformation | 64 | 情報メッセージ | |
標準ボタン | vbDefaultButton1 | 0 | 第1ボタン |
vbDefaultButton2 | 256 | 第2ボタン | |
vbDefaultButton3 | 512 | 第3ボタン |
「buttons」の部分に各分類の値の合計を指定することで、表示されるボタンやアイコン等を制御することができます。
3-4. 戻り値
定数 | 値 | 選択されたボタン |
---|---|---|
vbOK | 1 | [OK] |
vbCancel | 2 | [キャンセル] |
vbAbort | 3 | [中止] |
vbRetry | 4 | [再試行] |
vbIgnore | 5 | [無視] |
vbYes | 6 | [はい] |
vbNo | 7 | [いいえ] |