批處理指令碼 - if/else 語句



下一個決策語句是 if/else 語句。以下是該語句的一般形式。

If (condition) (do_something) ELSE (do_something_else)

該語句的一般工作原理是,首先在“if”語句中評估條件。如果條件為真,則執行其後的語句,並在 else 條件前停止並退出迴圈。如果條件為假,則執行 else 語句塊中的語句,然後退出迴圈。“if”語句的流程如下圖所示。

If/else Statement

檢查變數

就像批處理指令碼中的“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”程式碼,則這些語句將不是有效的 if else 語句。

  • 在第一個“if else”語句中,if 條件將評估為真。

  • 在第二個“if else”語句中,由於條件將被評估為假,因此將執行 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”。如果是,則它會將一個字串回顯到命令提示符。

  • 由於第二個“if”語句的條件評估為假,因此該語句的回顯部分將不會執行。

輸出

上述命令產生以下輸出。

"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"
batch_script_decision_making.htm
廣告