• 相关软件
    >If 创建者:webmaster 更新时间:2006-03-03 23:57

    If


    在批处理程序中执行条件处理。


    语法


    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]


    参数



    not
    指定只有当条件为假时才执行该命令。
    errorlevel Number
    只有当由 Cmd.exe 运行的前一个程序返回大于或等于 Number 的退出代码时,才能指定真条件。
    Command
    指定只有满足前面的条件时才应执行的命令。
    String1==String2
    只有当 String1String2 相同时才能指定真条件。这些值可以是文字字符串或批处理变量(例如 %1)。对于文字字符串,不需要使用问号。
    exist FileName
    如果 Filename 存在,则指定真条件。
    CompareOp
    指定三个字母的比较运算符。下表列出了 compareop 的有效值。
       
       
         
           
           
         
         
           
           
         
         
           
           
         
         
           
           
         
         
           
           
         
         
           
           
         
         
           
           
         
       
     
    运算符描述
    EQU等于
    NEQ不等于
    LSS少于
    LEQ少于或等于
    GTR大于
    GEQ大于或等于

    /i
    强制字符串比较忽略大小写。可以在 ifString1==String2 格式上使用 /i。这些比较是通用的。因为如果 String1String2 都全部由数字组成,则字符串将转化为数字并执行比较。
    cmdextversion Number
    只有当与 Cmd.exe 的“命令扩展”功能相关的内部版本号等于或大于 Number 时,才指定真条件。第一个版本是 1。当命令扩展的功能有重大增强时,则在此号码上加 1。禁用命令扩展时(默认情况下命令扩展为启用),cmdextversion 条件不为真。
    defined Variable
    如果定义了 Variable,则指定条件为真。
    Expression
    指定将传递给 else 子句中命令的命令行命令和任何参数。
    /?
    在命令提示符下显示帮助。


    注释



    • 如果 if 命令中指定的条件为真,则系统将执行该条件后的命令。如果条件为假,将忽略 if 子句中的命令,并执行 else 子句中的任何命令(如果在 else 子句中指定命令)。
    • 程序停止时,将返回退出代码。若要使用退出代码作为条件,则使用 errorlevel
    • 使用 defined Variable
         

      如果使用 defined Variable,可以添加下面三个变量:%errorlevel%%cmdcmdline%%cmdextversion%


         

      %errorlevel% 扩展到 errorlevel 当前值的字符串表达式,如果没有名为 ERRORLEVEL 的环境变量,就可取代 ERRORLEVEL 的值。下面的示例说明了如何在运行批处理程序后使用 errorlevel


         

      goto answer%errorlevel%

          :answer0

          echo Program had return code 0

          :answer1

          echo Program had return code 1

          goto end

          :end

          echo done!


         

      也可以使用如下的 CompareOp 比较运算符:


         
      if %errorlevel% LEQ 1 goto okay

         

      %cmdcmdline% 在任何 Cmd.exe 处理之前扩展传递到 Cmd.exe 的源命令行,如果没有名为 CMDCMDLINE 的环境变量,在这种情况下可取代 CMDCMDLINE 的值。


         

      %cmdextversion% 扩展到 cmdextversion 当前值的字符串表达式,如果没有名为 CMDEXTVERSION 的环境变量,就可取代 CMDEXTVERSION 的值。


    • 使用 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



    示例


    若要在未找到文件的 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.


    如果没有出现错误,将跳过错误消息。


    if 命令不能用于直接测试目录,但空 (NUL) 设备确实存在于每个目录中。因此,可以通过测试零设备确定目录是否存在。以下示例可测试目录的存在:


    if exist c:mydir\nul goto process


    相关文章
    本页查看次数: