Batch-script-return-code

提供:Dev Guides
移動先:案内検索

バッチスクリプト-リターンコード

デフォルトでは、コマンドラインの実行が完了すると、実行が成功した場合はゼロを返し、実行が失敗した場合はゼロ以外を返します。 実行が失敗した後にバッチスクリプトがゼロ以外の値を返す場合、ゼロ以外の値はエラー番号を示します。 次に、エラー番号を使用してエラーの内容を判断し、それに応じて解決します。

一般的な終了コードとその説明は次のとおりです。

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

Looping through Ranges

「for」ステートメントには、値の範囲を移動する機能もあります。 以下は、ステートメントの一般的な形式です。

4

Classic for Loop Implementation

以下は、ほとんどのプログラミング言語で利用できる古典的な「for」ステートメントです。

コマンドライン引数をループする

「for」ステートメントは、コマンドライン引数の確認にも使用できます。 次の例は、「for」ステートメントを使用してコマンドライン引数をループする方法を示しています。

&commat;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ステートメントは通常、ループ構造で使用され、最も内側のループを即座に終了させるために使用されます。