Batch-script-return-code
バッチスクリプト-リターンコード
デフォルトでは、コマンドラインの実行が完了すると、実行が成功した場合はゼロを返し、実行が失敗した場合はゼロ以外を返します。 実行が失敗した後にバッチスクリプトがゼロ以外の値を返す場合、ゼロ以外の値はエラー番号を示します。 次に、エラー番号を使用してエラーの内容を判断し、それに応じて解決します。
一般的な終了コードとその説明は次のとおりです。
Error Code | Description |
---|---|
0 | Program successfully completed. |
1 | Incorrect function. Indicates that Action has attempted to execute non-recognized command in Windows command prompt cmd.exe. |
2 | The system cannot find the file specified. Indicates that the file cannot be found in specified location. |
3 | The system cannot find the path specified. Indicates that the specified path cannot be found. |
5 | Access is denied. Indicates that user has no access right to specified resource. |
9009 0x2331 |
Program is not recognized as an internal or external command, operable program or batch file. Indicates that command, application name or path has been misspelled when configuring the Action. |
221225495 0xC0000017 -1073741801 a |
十分な仮想メモリが使用できません。 Windowsのメモリが不足していることを示しています。 a |
3221225786 0xC000013A -1073741510 |
The application terminated as a result of a CTRL+C. Indicates that the application has been terminated either by the user’s keyboard input CTRL+C or CTRL+Break or closing command prompt window. |
3221225794 0xC0000142 -1073741502 |
The application failed to initialize properly. Indicates that the application has been launched on a Desktop to which the current user has no access rights. Another possible cause is that either gdi32.dll or user32.dll has failed to initialize. |
エラーレベル
環境変数%ERRORLEVEL%には、最後に実行されたプログラムまたはスクリプトの戻りコードが含まれています。
デフォルトでは、ERRORLEVELを確認する方法は次のコードを使用します。
構文
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
バッチファイルの最後にコマンドEXIT/B%ERRORLEVEL%を使用して、バッチファイルからエラーコードを返すのが一般的です。
バッチファイルの最後でEXIT/Bを実行すると、バッチファイルの実行が停止します。
バッチファイルの末尾でEXIT/B <exitcodes>を使用して、カスタムリターンコードを返します。
環境変数%ERRORLEVEL%には、バッチファイル内の最新のエラーレベルが含まれます。これは、最後に実行されたコマンドの最新のエラーコードです。 同じ変数が異なるコンピューターで異なる値に展開されるため、バッチファイルでは、定数値の代わりに環境変数を使用することを常にお勧めします。
バッチファイルからエラーコードを確認する方法の簡単な例を見てみましょう。
例
次のコードを持つFind.cmdというバッチファイルがあるとします。 コードでは、lists.txtというファイルが見つからない場合、errorlevelを7に設定する必要があることを明確に述べています。 同様に、変数userprofileが定義されていない場合、errorlevelコードを9に設定する必要があります。
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
最初にFind.cmdを呼び出すApp.cmdという別のファイルがあるとします。 これで、Find.cmdがエラーを返し、errorlevelを0より大きい値に設定すると、プログラムが終了します。 次のバッチファイルでは、Find.cnd findを呼び出した後、実際にerrorlevelが0より大きいかどうかを確認します。
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
出力
上記のプログラムでは、次のシナリオを出力として使用できます-
- ファイルc:\ lists.txtが存在しない場合、コンソール出力には何も表示されません。
- 変数userprofileが存在しない場合、コンソール出力には何も表示されません。
- 上記の両方の条件に合格すると、コマンドプロンプトに文字列「Successful completion」が表示されます。
ループ
意思決定の章では、順番に次々に実行されるステートメントを見てきました。 さらに、バッチスクリプトで実装を行って、プログラムのロジックの制御フローを変更することもできます。 その後、制御ステートメントのフローに分類されます。
S.No | Loops & Description |
---|---|
1 |
While Statement Implementation Batch Scriptで直接使用できるwhileステートメントはありませんが、ifステートメントとラベルを使用してこのループの実装を非常に簡単に行うことができます。 |
2 |
For Statement - List Implementations 「FOR」構造は、バッチファイルのループ機能を提供します。 値のリストを操作するための「for」ステートメントの一般的な構成は次のとおりです。 |
3 |
「for」ステートメントには、値の範囲を移動する機能もあります。 以下は、ステートメントの一般的な形式です。 |
4 |
Classic for Loop Implementation 以下は、ほとんどのプログラミング言語で利用できる古典的な「for」ステートメントです。 |
コマンドライン引数をループする
「for」ステートメントは、コマンドライン引数の確認にも使用できます。 次の例は、「for」ステートメントを使用してコマンドライン引数をループする方法を示しています。
例
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
出力
上記のコードがTest.batというファイルに保存されていると仮定します。 上記のコマンドは、バッチファイルが1,2および3のコマンドライン引数をTest.bat 1 2 3として渡す場合、次の出力を生成します。
1
2
3
S.No | Loops & Description |
---|---|
1 |
Break Statement Implementation breakステートメントは、プログラミング言語内のループ内の制御フローを変更するために使用されます。 breakステートメントは通常、ループ構造で使用され、最も内側のループを即座に終了させるために使用されます。 |