MS-DOS和Windows命令行(如果有命令)

目录:

MS-DOS和Windows命令行(如果有命令)
MS-DOS和Windows命令行(如果有命令)
Anonim

所述,如果在批处理程序指令执行条件处理。

可用性

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 如果指定的文本字符串匹配,则指定一个真条件。
存在文件名 如果指定的文件名存在,则指定一个真条件。