执行批处理bat程序中的条件处理
以下代码是使⽤ if /? >> C:\\help.txt ⽣成的。 ----------------------------------------------------------------- 执⾏批处理程序中的条件处理。
IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command
NOT 指定只有条件为 false 的情况下, Windows XP 才 应该执⾏该命令。
ERRORLEVEL number 如果最后运⾏的程序返回⼀个等于或⼤于 指定数字的退出编码,指定条件为 true。
string1==string2 如果指定的⽂字字符串匹配,指定条件为 true。 EXIST filename 如果指定的⽂件名存在,指定条件为 true。 command 如果符合条件,指定要执⾏的命令。如果指定的 条件为 FALSE,命令后可跟⼀个执⾏ 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 command IF CMDEXTVERSION number command IF DEFINED variable command 其中,⽐较运算符可以是: EQU - 等于 NEQ - 不等于 LSS - ⼩于
LEQ - ⼩于或等于 GTR - ⼤于
GEQ - ⼤于或等于
及 /I 开关;如果该开关被指定,则说明要进⾏的字符串⽐较不分 ⼤⼩写。/I 开关可以⽤于 IF 的 string1==string2 的形式上。这些 ⽐较都是通⽤的;原因是,如果 string1 和 string2 都是由数字 组成的,字符串会被转换成数字,进⾏数字⽐较。
CMDEXTVERSION 条件的作⽤跟 ERRORLEVEL 的⼀样,除了它 是在跟与命令扩展名有关联的内部版本号⽐较。第⼀个版本
是 1。每次对命令扩展名有相当⼤的增强时,版本号会增加⼀个。 命令扩展名被停⽤时,CMDEXTVERSION 条件不是真的。 如果已定义环境变量,DEFINED 条件的作⽤跟 EXISTS 的⼀样, 除了它取得⼀个环境变量,返回的结果是 true。
如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL% 会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到 其数值。运⾏程序后,以下语句说明 ERRORLEVEL 的⽤法: goto answer%ERRORLEVEL% :answer0
echo Program had return code 0 :answer1
echo Program had return code 1 您也可以使⽤以上的数字⽐较:
IF %ERRORLEVEL% LEQ 1 goto okay
如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE% 将在 CMD.EXE 进⾏任何处理前扩充为传递给 CMD.EXE 的原始 命令⾏;否则,您会得到其数值。
如果没有名为 CMDEXTVERSION 的环境变量,
%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的 字串符表达式;否则,您会得到其数值。
因篇幅问题不能全部显示,请点此查看更多更全内容