Batch-script-if-else-statement

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

バッチスクリプト-If/elseステートメント

次の意思決定ステートメントは、If/elseステートメントです。 このステートメントの一般的な形式は次のとおりです。

If (condition) (do_something) ELSE (do_something_else)

このステートメントの一般的な機能は、最初に「if」ステートメントで条件が評価されることです。 条件がtrueの場合、その後ステートメントを実行し、else条件の前に停止してループを終了します。 条件がfalseの場合、elseステートメントブロック内のステートメントを実行し、ループを終了します。 次の図は、「if」ステートメントのフローを示しています。

If/elseステートメント

変数の確認

バッチスクリプトの「if」ステートメントと同様に、if-elseは、バッチスクリプト自体に設定されている変数のチェックにも使用できます。 「if」ステートメントの評価は、文字列と数字の両方に対して実行できます。

整数変数の確認

次の例は、数値に「if」ステートメントを使用する方法を示しています。

@echo off
SET/A a = 5
SET/A b = 10
SET/A c = %a% + %b%
if %c%==15 (echo "The value of variable c is 15") else (echo "Unknown value")
if %c%==10 (echo "The value of variable c is 10") else (echo "Unknown value")

上記のプログラムについて注意すべき重要なことは-

  • 各「if else」コードは括弧()に入れられます。 「if and else」コードのコードを分離するために角かっこが配置されていない場合、ステートメントはif elseステートメントの有効なものではありません。
  • 最初の「if else」ステートメントでは、if条件がtrueと評価されます。
  • 2番目の「if else」ステートメントでは、条件がfalseと評価されるため、else条件が実行されます。

出力

上記のコマンドは、次の出力を生成します。

"The value of variable c is 15"
"Unknown value"

文字列変数の確認

同じ例を文字列に対して繰り返すことができます。 次の例は、「if else」ステートメントを文字列に使用する方法を示しています。

@echo off
SET str1 = String1
SET str2 = String2

if %str1%==String1 (echo "The value of variable String1") else (echo "Unknown value")
if %str2%==String3 (echo "The value of variable c is String3") else (echo "Unknown value")

上記のプログラムについて注意すべき重要なことは-

  • 最初の「if」ステートメントは、変数str1の値に文字列「String1」が含まれているかどうかを確認します。 その場合、コマンドプロンプトに文字列がエコーされます。
  • 2番目の「if」ステートメントの条件がfalseと評価されるため、ステートメントのエコー部分は実行されません。

出力

上記のコマンドは、次の出力を生成します。

"The value of variable String1"
"Unknown value"

コマンドライン引数の確認

「if else」ステートメントは、コマンドライン引数のチェックにも使用できます。 次の例は、「if」ステートメントを使用してコマンドライン引数の値を確認する方法を示しています。

@echo off
echo %1
echo %2
echo %3
if %1%==1 (echo "The value is 1") else (echo "Unknown value")
if %2%==2 (echo "The value is 2") else (echo "Unknown value")
if %3%==3 (echo "The value is 3") else (echo "Unknown value")

出力

上記のコードがtest.batというファイルに保存され、プログラムが次のように実行される場合

test.bat 1 2 4

以下は上記のプログラムの出力です。

1
2
4
"The value is 1"
"The value is 2"
"Unknown value"

定義されている場合

「if」ステートメントの特殊なケースは「if defined」であり、変数の存在をテストするために使用されます。 以下は、ステートメントの一般的な構文です。

if defined somevariable somecommand

次に、「if defined」ステートメントの使用方法の例を示します。

@echo off
SET str1 = String1
SET str2 = String2
if defined str1 echo "Variable str1 is defined"

if defined str3 (echo "Variable str3 is defined") else (echo "Variable str3 is not defined")

出力

上記のコマンドは、次の出力を生成します。

"Variable str1 is defined"
"Variable str3 is not defined"

存在する場合

「if」ステートメントのもう1つの特殊なケースは「if exists」です。これは、ファイルの存在をテストするために使用されます。 以下は、ステートメントの一般的な構文です。

If exist somefile.ext do_something

「if exists」ステートメントを使用する方法の例を次に示します。

@echo off
if exist C:\set2.txt echo "File exists"
if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")

出力

Cドライブにset2.txtというファイルがあり、set3.txtというファイルがないと仮定します。 次に、上記のコードの出力を次に示します。

"File exists"
"File does not exist"