在批處理程序中執(zhí)行條件處理。
如果啟用了命令擴(kuò)展,請(qǐng)使用以下語法:
運(yùn)算符 | 描述 |
---|---|
EQU | 等于 |
NEQ | 不等于 |
LSS | 少于 |
LEQ | 少于或等于 |
GTR | 大于 |
GEQ | 大于或等于 |
如果使用 defined Variable,可以添加下面三個(gè)變量:%errorlevel%、%cmdcmdline% 和 %cmdextversion%。
%errorlevel% 擴(kuò)展到 errorlevel 當(dāng)前值的字符串表達(dá)式,如果沒有名為 ERRORLEVEL 的環(huán)境變量,就可取代 ERRORLEVEL 的值。下面的示例說明了如何在運(yùn)行批處理程序后使用 errorlevel:
goto answer%errorlevel%
:answer0
echo Program had return code 0
:answer1
echo Program had return code 1
goto end
:end
echo done!
也可以使用如下的 CompareOp 比較運(yùn)算符:
if %errorlevel% LEQ 1 goto okay
%cmdcmdline% 在任何 Cmd.exe 處理之前擴(kuò)展傳遞到 Cmd.exe 的源命令行,如果沒有名為 CMDCMDLINE 的環(huán)境變量,在這種情況下可取代 CMDCMDLINE 的值。
%cmdextversion% 擴(kuò)展到 cmdextversion 當(dāng)前值的字符串表達(dá)式,如果沒有名為 CMDEXTVERSION 的環(huán)境變量,就可取代 CMDEXTVERSION 的值。
else 子句必須出現(xiàn)在與 if 后的命令相同的行中。例如:
IF EXIST FileName. (
del FileName.
) ELSE (
echo FileName. missing.
)
下面的代碼不起作用,因?yàn)楸仨毻ㄟ^重起一行中止 del 命令:
IF EXIST FileName. del FileName.ELSE echo FileName. missing
以下命令不起作用,因?yàn)?else 命令必須在與 if 命令的末尾相同的行上:
IF EXIST FileName. del FileName.
ELSE echo FileName. missing
如果要在單行上進(jìn)行格式處理,可以使用如下形式的原始語句:
IF EXIST FileName.(del FileName.)ELSE echo FileName. missing
若要在未找到文件的 Product.dat 時(shí)顯示“未找到數(shù)據(jù)文件”的消息,請(qǐng)鍵入:
if not exist product.dat echo Cannot find data file
如果格式化驅(qū)動(dòng)器 A 中的磁盤期間出現(xiàn)錯(cuò)誤,則下面示例將會(huì)顯示錯(cuò)誤消息:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
如果沒有出現(xiàn)錯(cuò)誤,將跳過錯(cuò)誤消息。
if 命令不能用于直接測試目錄,但空 (NUL) 設(shè)備確實(shí)存在于每個(gè)目錄中。因此,可以通過測試零設(shè)備確定目錄是否存在。以下示例可測試目錄的存在:
if exist c:mydir\nul goto process