Board logo

標題: [分享] BAT批次指令: IF 的功能介紹 [打印本頁]

作者: a448488    時間: 2013-8-16 08:56     標題: BAT批次指令: IF 的功能介紹

BAT批次指令: IF 的功能介紹

IF :在批次檔中執行條件處理。

指令詳解:

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

  NOT               表示 Windows XP 應該只有在條件為偽時
                    才執行命令。

  ERRORLEVEL number 當上一個執行的程式傳回的結束碼大於或
                    等於指定數字時,則條件為真。

  string1==string2  當指定的文字字串相符合時,則條件
                    為真。

  EXIST filename    如果指定的檔名存在時,則條件
                    為真。

  command           指定當條件為真時所要執行的命令。
                    命令之後可以接著 ELSE 命令。當指定條件為
                    偽時,緊接在 ELSE 命令之後的命令
                    將會被執行。

ELSE 子句必須出現在 IF 之後的同一行。
例如:

    IF EXIST filename. (
        del filename.
    ) ELSE (
        echo filename. missing.
    )

以下命令無法作用,因為 del 命令必須以換行字元來結尾:

    IF EXIST filename. del filename. ELSE echo filename. missing

下面命令也無法作用,因為 ELSE 命令必須在與 IF 命令同一行的結尾:

    IF EXIST filename. del filename.
    ELSE echo filename. missing

下面命令只有在寫成一行時才能作用:

    IF EXIST filename. (del filename.) ELSE echo filename. missing

如果您啟用擴充命令,IF 的變更如下:

    IF [/I] string1 compare-op string2 命令
    IF CMDEXTVERSION 數字命令
    IF DEFINED 變數命令

compare-op 可以是:

    EQU - 等於
    NEQ - 不等於
    LSS - 小於
    LEQ - 小於或等於
    GTR - 大於
    GEQ - 大於或等於

而如果指定 /I 參數,則執行區分大小寫的字串比對。
此 /I 參數也可使用string1==string2 格式於 IF 命令。
這些比對是通用的,因為在比對中,如果 string1 及 string2 兩者皆由十進位數字所構成,則字串將會轉換為數字,並執行數字的比對。

CMDEXTVERSION 條件式的運作和 ERRORLEVEL 一樣,除非它和與擴充命令相關的內部版本編號作比對。
第一個版本為 1。若擴充命令大幅度地增強時就再加 1。
當擴充命令停用時,CMDEXTVERSION 條件式永遠不為真。

DEFINED 條件式的運作和 EXISTS 一樣,除非它帶有環境變數名稱,如果環境變數已定義則傳回 true 值。

%ERRORLEVEL% 將擴充到代表目前 ERRORLEVEL 變數的一個字串,前提是已經沒有名為 ERRORLEVEL 的環境變數,在這個情況下,您會得到它的值。
使用此值和上面的數字比對運算元,您可以作下列的選擇:

    goto answer %ERRORLEVEL%
    :answer0
    提示您鍵入 Y 加以確定
    :answer1
    提示您鍵入N 加以否定

您也可使用上面的數字比對:

    IF %ERRORLEVEL% LEQ 1 goto okay

%CMDCMDLINE% 將擴充到比 CMD.EXE 的任何處理程序更早傳給 CMD.EXE 的原始命令列,前提是已經沒有名為 CMDCMDLINE 的環境變數,在這個情形下,您會得到它的值。

%CMDEXTVERSION% 將擴充成一個表示目前 CMDEXTVERSION 值的字串,表示沒有名為 CMDEXTVERSION 的環境變數。
這種情況下您將會得到它的值。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)