下一個決策陳述是if/else
語句。 以下是本宣告的一般形式。
if (condition) (do_something) ELSE (do_something_else)
上述語句首先在「if」
語句中評估一個條件。 如果條件為真,則執行後面的語句,並在else
條件之前停止並退出迴圈。 如果條件為false
,則執行else
語句塊中的語句,然後退出迴圈。 下圖顯示了'if'
語句的流程。
檢查變數
就像批次處理指令碼中的「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"
和"else"
程式碼的程式碼,那麼如果else
語句不成立,那麼這些語句就不會有效。「if else」
語句中,if
條件將評估為true
。「if else」
語句中,else
條件將被執行,因為條件將被評估為false
。以上命令產生以下輸出 -
"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」
。 如果是這樣,那麼它會在命令提示字元下回顯一個字串。「if」
語句的條件評估為false
,所以語句的echo
部分將不會被執行。以上命令產生以下輸出 -
"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 defined
「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 exists「if」
語句的另一個特例是「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"