Windows CMD 教學:CMD的條件式分歧處理


在 Windows 的 CMD(命令提示字元)中,條件式分歧處理是撰寫批次檔或進行邏輯控制時的關鍵功能。

以下是幾種常見且實用的條件處理方式,並附上範例與說明,接下來就透過說明及一些例子來學習吧。

目錄

{tocify} $title={目錄} 


條件式分歧處理方式


Windows CMD 也可以和其他程式語言一樣,進行條件式的判斷,
以下就判斷式的撰寫方式進行說明。

由於撰寫的內容不再限於單行,而且程式碼需要執行的內容也變多。
如果需要撰寫判斷式時,建議做成.bat 批次檔來執行程式,會比較容易的多。


在進入範例之前:


1.   以下部分範例會用到以下註解,程式碼最後會加上pause 表示畫面暫停。

pause 是一個非常簡單卻實用的指令, 主要用來暫停批次檔的執行,等待使用者按任意鍵繼續。

2.   未使用註解或加上pause使畫面暫停的範例,請自行斟酌需要追加即可。

3.   另外,您可以在在批次檔的程式碼開頭撰寫  “ @echo off ” 。

此程式碼可防止之後寫的任何命令顯示在螢幕上。如果沒有撰寫,則每次執行操作時命令都會列印到螢幕上。

echo off  前方加上@ 是因為 echo off 文字還會殘留在畫面上,所以在前方加上@,以隱藏echo off 文字。

以下可以看看例子:



4.  另外,在範例中也會提到註解方式,說明如下 : 


REM  為Windows CMD註解的方式,註解方式為 :

1.   REM  或   rem         大小寫皆可
2.   ::                               雙冒號

前方的  @  表示不將註解輸出到CMD的畫面上。


在簡單看完以上的說明,接下來就讓我們進到範例看看。


單一條件式分歧


IF判斷寫成單行的方式 : 


Point!

IF  條件式   ( 滿足條件時進行處理 )  


小括號內可放一條或多條指令,用分號或 & 連接。


範例1:  判斷檔案是否存在

IF EXIST "data.txt" echo 找到檔案 data.txt

在IF 後方加上 EXIST 表示 存在, 如果加上  NOT EXIST 表示不存在。

例如:

IF  EXIST   條件式   (處理)            =>   如果存在...,則進行處理....

IF  NOT EXIST  條件式   (處理)    =>   如果不存在...,則進行處理...   
  

範例執行結果如下 :



範例2:  判斷變數值

@REM 設定變數username,並設定值為admin 
@SET username=admin

@IF "%username%"=="admin" echo 歡迎系統管理員

pause




If判斷式寫成多行的方式


Point!

IF  條件式   (

      滿足條件時進行處理  

)



範例1:  把文字輸出到檔案


IF NOT EXIST report.txt (

    @REM 把哈囉我是測試資料 輸出到report的txt檔案
    @REM 這時候如果沒有檔案 會建立該檔案
    ECHO 哈囉! 我是測試資料! > report.txt
	
    @REM 在畫面輸出訊息
    ECHO 已建立 report.txt
	
    @REM 程式暫停,提示按任意鍵繼續
    pause
)

這裡再重複說明一次,

REM  為Windows CMD註解的方式,註解方式如下  :

1.   REM  或   rem         大小寫皆可
2.   ::                               雙冒號

前方的  @  表示不將註解輸出到CMD的畫面上。

執行的結果如下,
在下方的部分,我先建立一個Test.bat的測試檔案,並將程式碼寫在其中,
注意 :  
如果副檔名為.bat,點擊後會直接執行,可以使用滑鼠右鍵 > 選擇記事本或其他程式軟體撰寫。






如果  REM  前方不使用  @ , 則會在CMD 畫面出現註解內容。






If判斷式:  單條件式分歧



Point!

IF  條件式   (  

        滿足條件式時進行處理

)  ELSE (

        無法滿足條件式時的處理

)



範例1:  判斷使用者輸入 Y/N:

SET /P answer=是否要繼續?(Y/N):
IF /I "%answer%"=="Y" (
    ECHO 程式開始執行...
) ELSE IF /I "%answer%"=="N" (
    ECHO 程式已取消。
) ELSE (
    ECHO 您輸入的資料無效。
)


以上程式執行的內容如下。







多條件式分歧


If判斷式:  多條件式分歧



Point!

IF  條件式1   (  

        滿足條件式1時進行處理

)  ELSE IF 條件式2 (

        滿足條件式2時進行處理

)  ELSE IF 條件式3 (

       滿足條件式3時進行處理

)    ... 以此類推

)  ELSE (

        無法滿足條件式時的處理

)



範例  1:  判斷成績等級

本次範例會使用到比較的演算子,使用說明如下:

演算子 說明
EQU 等於 (EQUal)
NEQ 不等於 (Not EQual)
LSS 小於 (LeSS than)
LEQ 小於或等於 (Less than or EQual)
GTR 大於 (GreaTeR than)
GEQ 大於或等於 (Greater than or EQual)

SET /A score=75

IF %score% GEQ 90 (
    ECHO 成績等級:優
) ELSE IF %score% GEQ 80 (
    ECHO 成績等級:甲
) ELSE IF %score% GEQ 70 (
    ECHO 成績等級:乙
) ELSE IF %score% GEQ 60 (
    ECHO 成績等級:丙
) ELSE (
    ECHO 成績不及格
)

以上程式執行的內容如下。


多條件式分歧須留意部分

和VBA的If 多條件判斷時的狀況相同,
在寫if判斷時,務必要注意完成條件式的先後順序。


範例: 判斷成績等級 - 要注意先後順序


SET /A score=85

IF %score% GEQ 60 (
    ECHO 成績等級:丙
) ELSE IF %score% GEQ 70 (
    ECHO 成績等級:乙
) ELSE IF %score% GEQ 80 (
    ECHO 成績等級:甲
) ELSE IF %score% GEQ 90 (
    ECHO 成績等級:優
) ELSE (
    ECHO 成績不及格
)


以上程式執行的內容如下。






張貼留言 (0)
較新的 較舊