【bat】バッチファイルでERRORLEVEL を使ってエラーハンドリングを行う方法

バッチファイルやコマンドプロンプトで ERRORLEVEL を使ってエラーハンドリングを行う方法を紹介します。ERRORLEVEL は、直前に実行されたコマンドの終了コードを表す環境変数で、コマンドが正常に終了したかどうかを判断するのに役立ちます。

基本的な ERRORLEVEL のチェック

まず、バッチファイル内で ERRORLEVEL を使ってコマンドの実行結果を確認する基本的な方法を紹介します。

@echo off
rem 任意のコマンドを実行
mycommand

rem 直前のコマンドが成功したか確認
if %ERRORLEVEL% equ 0 (
    echo コマンドは成功しました。
) else (
    echo コマンドは失敗しました。エラーコード: %ERRORLEVEL%
)

このスクリプトでは、mycommand の実行結果に応じてメッセージを表示します。ERRORLEVEL が 0 なら成功、それ以外なら失敗と判定します。

特定のエラーコードをチェックする

次に、特定のエラーコードをチェックする方法です。複数のエラーコードに対して異なる処理を行いたい場合に便利です。

@echo off
mycommand

if %ERRORLEVEL% equ 1 (
    echo エラーコード1が発生しました。
) else if %ERRORLEVEL% equ 2 (
    echo エラーコード2が発生しました。
) else (
    echo その他のエラーが発生しました。エラーコード: %ERRORLEVEL%
)

このスクリプトでは、mycommand の実行結果に応じて異なるエラーメッセージを表示します。

ERRORLEVEL を使った制御フロー

ERRORLEVEL を使って、バッチファイルの制御フローを変更する例を紹介します。エラーが発生した場合に特定の処理を行う際に便利です。

@echo off
rem ファイルをコピー
copy source.txt destination.txt

rem エラーコードをチェック
if %ERRORLEVEL% neq 0 (
    echo ファイルのコピーに失敗しました。エラーコード: %ERRORLEVEL%
    goto :error
)

echo ファイルのコピーに成功しました。
goto :end

:error
echo エラーが発生しました。処理を終了します。

:end

このスクリプトでは、ファイルのコピーに成功した場合と失敗した場合で処理を分けています。

比較演算子の使い方

ERRORLEVEL を使った条件分岐では、数値として比較するために以下の演算子を使用します。

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

if ERRORLEVEL 形式の使い方

特定のエラーコード以上をチェックする場合は、if ERRORLEVEL という形式も使えます。

@echo off
mycommand

if ERRORLEVEL 1 (
    echo コマンドは失敗しました。
) else (
    echo コマンドは成功しました。
)

この形式では、ERRORLEVEL が 1 以上の場合に真となります。

まとめ

ERRORLEVEL を使うことで、バッチファイル内でエラーハンドリングを行うことができます。基本的な使い方から、特定のエラーコードのチェック、制御フローの分岐方法までを紹介しました。これを活用して、バッチファイルの信頼性を高めましょう。