在批处理程序中执行条件处理。
语法
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
如果启用了命令扩展,请使用以下语法:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]
参数
参数 | 说明 |
---|---|
不 | 指定仅当条件为 false 时,才应执行该命令。 |
错误级别 <number> |
仅当上一个程序通过 Cmd.exe 返回的退出代码等于或大于 数字时,才指定一个 true 条件。 |
<command> |
指定满足上述条件时应执行的命令。 |
<string1>==<string2> |
仅当 string1 和 string2 相同时,才指定一个 true 条件。 这些值可以是文本字符串或批处理变量(例如,%1 )。 无需将文本字符串括在引号中。 |
存在 <filename> |
如果指定的文件名存在,则指定 true 条件。 |
<compareop> |
指定三个字母比较运算符,包括:
|
/我 | 强制字符串比较忽略大小写。 如果 ,则可以在的 string1==string2 形式上使用 /i。 这些比较是泛型的,也就是说,如果 string1 和 string2 仅由数字组成,则字符串将转换为数字,并执行数字比较。 |
cmdextversion <number> |
仅当与 Cmd.exe 命令扩展功能关联的内部版本号等于或大于指定的数字时,才指定一个 true 条件。 第一个版本为 1。 当向命令扩展添加重要增强功能时,它会增加一个增量。 禁用命令扩展时,cmdextversion 条件永远不会为 true(默认情况下,启用命令扩展)。 |
定义的 <variable> |
如果定义了 变量,则指定一个 true 条件。 |
<expression> |
指定要在 else 子句中传递给命令的命令行命令和任何参数。 |
/? | 在命令提示符下显示帮助。 |
注解
如果 子句为 true,则 中指定的条件,则执行遵循条件的命令。如果条件为 false,则 如果忽略 子句,该命令将执行在 else 子句中指定的任何命令。
当程序停止时,它将返回退出代码。 若要将退出代码用作条件,请使用 错误级别 参数。
如果使用定义的 ,则以下三个变量将添加到环境中:%errorlevel%、%cmdcmdline%和 %cmdextversion%。
%errorlevel%:展开为 ERRORLEVEL 环境变量的当前值的字符串表示形式。 此变量假定还没有名为 ERRORLEVEL 的现有环境变量。 如果有,将改为获取 ERRORLEVEL 值。
%cmdcmdline%:展开到 Cmd.exe之前传递给 Cmd.exe 的原始命令行。 这假定还没有名为 CMDCMDLINE 的现有环境变量。 如果有,将改为获取该 CMDCMDLINE 值。
%cmdextversion%:展开到 cmdextversion当前值的字符串表示形式。 这假定还没有名为 CMDEXTVERSION 的现有环境变量。 如果有,将改为获取该 CMDEXTVERSION 值。
如果 ,则必须在命令后面的同一行上使用 else 子句。
例子
若要显示消息 找不到数据文件Product.dat,请键入:
if not exist product.dat echo Cannot find data file
若要在驱动器 A 中格式化磁盘,并在格式设置过程中发生错误时显示错误消息,请在批处理文件中键入以下行:
:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
若要从当前目录中删除文件Product.dat,或者在找不到Product.dat时显示消息,请在批处理文件中键入以下行:
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
注释
这些行可以组合成一行,如下所示:
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
若要在运行批处理文件后回显 ERRORLEVEL 环境变量的值,请在批处理文件中键入以下行:
goto answer%errorlevel%
:answer1
echo The program returned error level 1
goto end
:answer0
echo The program returned error level 0
goto end
:end
echo Done!
若要转到正常标签(如果 ERRORLEVEL 环境变量的值小于或等于 1,请键入:
if %errorlevel% LEQ 1 goto okay