批次處理if/else語句

2019-10-16 22:59:42

下一個決策陳述是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"