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 的環境變數。
這種情況下您將會得到它的值。
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 的環境變數。
這種情況下您將會得到它的值。
留言
張貼留言