批次處理if語句

2019-10-16 22:59:40

第一個決策語句是if語句。 批次處理指令碼中if語句的一般形式如下所示 -

if(condition) do_something

本宣告的一般工作是首先在if語句中評估一個條件。如果條件為真,則執行語句。 下圖顯示了if語句的流程。

檢查變數

批次處理指令碼中'if'語句的常見用法之一是檢查在批次處理指令碼中設定的變數。 字串和數位都可以對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" 
if %c%==10 echo "The value of variable c is 10"

關於上述程式有兩點需要說明 -

  • 第一個「if」語句檢查變數c的值是否為15。如果是這樣,那麼它將回顯一個字串到命令提示字元。
  • 由於語句中的條件 - 如果if %c% == 10 則列印變數c的值為10,但評估結果為false,所以此語句的echo部分將不會執行。

以上命令產生以下輸出 -

The value of variable c is 15

檢查字串變數

以下範例顯示如何將if語句用於字串。

@echo off 
SET str1=String1 
SET str2=String2 
if %str1%==String1 echo "The value of variable String1" 
if %str2%==String3 echo "The value of variable c is String3"

關於上述程式有兩點需要說明 -

  • 第一個「if」語句檢查變數str1的值是否包含字串「String1」。 如果是,那麼它會在命令提示字元下回顯一個字串。
  • 由於第二個「if」語句的條件評估為false,所以語句的echo部分將不會被執行。

以上命令產生以下輸出 -

The value of variable String1

要注意的是,'if'語句中的評估是「區分大小寫的」,與上面相同的程式稍作修改,如下例所示:在第一個語句中,我們改變了比較標準,以下程式的輸出將不會產生任何結果。

@echo off 
SET str1=String1 
SET str2=String2 
if %str1%==StrinG1 echo "The value of variable String1" 
if %str2%==String3 echo "The value of variable c is String3"

檢查命令列引數
「if」語句的另一個常見用途是用來檢查傳遞給批次處理檔案的命令列引數的值。 以下範例顯示如何使用「if」語句來檢查命令列引數的值。

@echo off 
echo %1 
echo %2 
echo %3 
if %1%==1 echo "The value is 1" 
if %2%==2 echo "The value is 2" 
if %3%==3 echo "The value is 3"

關於上述程式有兩點需要說明 -

  • 上面的程式假定在執行批次處理指令碼時會傳遞3個命令列引數。
  • 每個命令列引數與一個值進行比較。 如果標準通過,則字串作為輸出傳送。

如果上面的程式碼被儲存在一個名為test.bat的檔案中並且程式被執行為 -

test.bat 1 2 3

以下將是上述程式的輸出結果 -

1 
2 
3 
"The value is 1" 
"The value is 2" 
"The value is 3"