Batch-script-nested-if-statements
バッチスクリプト-ネストされたIfステートメント
場合によっては、複数の「if」ステートメントを相互に埋め込む必要があります。 このステートメントの一般的な形式は次のとおりです。
if(condition1) if (condition2) do_something
そのため、condition1とcondition2が満たされた場合にのみ、do_somethingブロックのコードが実行されます。
以下は、ネストされたifステートメントの使用方法の例です。
例
@echo off
SET/A a = 5
SET/A b = 10
if %a%==5 if %b%==10 echo "The value of the variables are correct"
出力
上記のコマンドは、次の出力を生成します。
"The value of the variables are correct"
エラーレベルの場合
さらに別の特殊なケースは「if errorlevel」で、これは最後に実行されたコマンドの終了コードをテストするために使用されます。 さまざまなコマンドが整数の終了コードを発行して、コマンドのステータスを示します。 一般に、コマンドは、コマンドが正常に完了した場合は0を渡し、コマンドが失敗した場合は1を渡します。
このステートメントの一般的な構文は次のとおりです。
if errorlevel n somecommand
ここで、「n」は整数の終了コードの1つです。
後藤声明
一般的に、バッチファイルの実行は、順番に実行される各行のコマンドを使用して、行ごとに実行されます。 ただし、他の部分をスキップしながら、バッチファイルの特定のセクションを実行することが望ましい場合があります。 特定のセクションにホップする機能は、適切に名前が付けられた「goto」コマンド(1つの単語として記述)によって提供されます。 ターゲットセクションには、先頭にコロンが付いた名前の行がラベル付けされています。 したがって、スクリプトは次のようになります-
...
goto :label
...some commands
:label
...some other commands
実行は「一部のコマンド」をスキップし、「その他のコマンド」で始まります。 ラベルは、「goto」コマンドの前を含む、スクリプト内の任意の場所の行にすることができます。 「Goto」コマンドは、しばしば「if」ステートメントで発生します。 たとえば、タイプのコマンドがあるかもしれません-
if (condition) goto :label
次に、gotoステートメントの使用方法の例を示します。
例
@echo off
SET/A a = 5
if %a%==5 goto :labela
if %a%==10 goto :labelb
:labela
echo "The value of a is 5"
exit/b 0
:labelb
echo "The value of a is 10"
上記のプログラムについて注意すべき重要なことは-
- ラベルのコードステートメントは、ラベルの宣言の次の行にある必要があります。
- 複数のgotoステートメントとそれに対応するラベルをバッチファイルで定義できます。
- ラベル宣言は、ファイル内の任意の場所に置くことができます。
出力
上記のコマンドは、次の出力を生成します。
"The value of a is 5"