所述,如果在批处理程序指令执行条件处理。
可用性
if命令是在批处理文件中访问和使用的内部命令。
- Windows 95
- Windows 98
- Windows NT
- Windows XP
- Windows 2000
- Windows Vista
- Windows 7的
- Windows 8
- Windows 10
句法
- Windows Vista和更高版本的语法。
- Windows XP和更早的语法。
Windows Vista和更高版本的语法
IF [NOT]错误级别数字命令IF [NOT] string1 == string2命令IF [NOT] EXIST文件名命令
不 | 指定Windows 2000或XP仅在条件为false时才执行命令。 |
错误级别编号 | 如果最后一个运行的程序返回的退出代码等于或大于指定的数字,则指定一个真条件。 |
字符串1 ==字符串2 | 如果指定的文本字符串匹配,则指定一个真条件。 |
存在文件名 | 如果指定的文件名存在,则指定一个真条件。 |
命令 | 指定满足条件时要执行的命令。如果指定条件为FALSE,则命令后面可以跟随ELSE命令,该命令将在ELSE关键字之后执行该命令。 |
ELSE子句必须与IF之后的命令位于同一行。例如:
如果存在文件名。(删除文件名。)其他(回显文件名。丢失。)
下面的示例不起作用,因为del命令需要用换行符终止:
如果存在文件名。del文件名。ELSE回显文件名。失踪
下面的示例也不起作用,因为ELSE命令必须与IF命令的末尾位于同一行:
如果存在文件名。del文件名。ELSE回显文件名。失踪
如果您希望全部都放在一行中,则下面的示例将起作用:
如果文件名存在。(删除文件名。)ELSE回显文件名。失踪
如果启用了命令扩展,则IF更改如下:
IF [/ I] string1比较操作string2命令IF CMDEXTVERSION数字命令IF DEFINED变量命令
其中compare-op可能是以下之一:
- EQU-相等
- NEQ-不相等
- LSS-小于
- LEQ-小于或等于
- GTR-大于
- GEQ-大于或等于
/ I开关(如果指定)表示执行不区分大小写的字符串比较。/ I开关也可以用于IF的string1 == string2形式。这些比较是通用的,如果string1和string2都由所有数字组成,则它们将转换为数字并执行数字比较。
CMDEXTVERSION条件条件类似于ERRORLEVEL,但它与与命令扩展关联的内部版本号进行比较。第一个版本是1。当对命令扩展进行了重大增强时,它将增加一个。禁用命令扩展时,CMDEXTVERSION条件永远不会为真。
DEFINED条件条件的工作方式类似于EXISTS,不同之处在于它采用环境变量名称,并且如果定义了环境变量,则返回true。
如果没有名称为ERRORLEVEL的环境变量,则%ERRORLEVEL%会扩展为ERRORLEVEL当前值的字符串,在这种情况下,您可以获取其值。运行程序后,以下示例说明了ERRORLEVEL的用法:
goto answer%ERRORLEVEL%:answer0回显程序具有返回码0:answer1回显程序具有返回码1
您还可以使用以下数值比较:
如果%ERRORLEVEL%LEQ 1正常
如果没有CMDCMDLINE环境变量,则%CMDCMDLINE%会扩展到在CMD.EXE进行任何处理之前传递给CMD.EXE的命令行。在这种情况下,您可以获取它的值。
如果没有名称为CMDEXTVERSION的环境变量,则%CMDEXTVERSION%会扩展为CMDEXTVERSION值的字符串,在这种情况下,您可以获取其值。
Windows XP和更早的语法
在批处理程序中执行条件处理。
IF [NOT]错误级别数字命令IF [NOT] string1 == string2命令IF [NOT] EXIST文件名命令
不 | 指定Windows仅在条件为false时才执行命令。 |
错误级别编号 | 如果最后一个运行的程序返回的退出代码等于或大于指定的数字,则指定一个真条件。 |
命令 | 指定满足条件时要执行的命令。 |
字符串1 ==字符串2 | 如果指定的文本字符串匹配,则指定一个真条件。 |
存在文件名 | 如果指定的文件名存在,则指定一个真条件。 |