08-CMD_if命令讲解

来源:互联网 发布:stc8单片机 编辑:程序博客网 时间:2024/06/08 18:00
if 命令讲解


IF命令有三种用法:
1, if [not] errorLevel number commond
2, if [not] string1==string2 commond
3, if [not] exist filename commond
说明:
    NOT     
        条件为 false时, 才执行
    errorLevel number
        如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true 
    string1==string2   
        如果指定的文字字符串匹配,指定条件为 true 。
    EXIST filename     
        如果指定的文件名存在,指定条件为 true 。
    command           
        如果符合条件,指定要执行的命令。
    ELSE子句
        必须在 IF之后,且处于同一行(即同一个语句).
        if exist filename (
            del filename
        ) else (
            echo filename missing
        )
        
一, IF [NOT] ERRORLEVEL number command 
作用:
    这个用法的基本做用是判断上一条命令执行结果的代码,以决定下一个步骤. 
    即, %errorLevel% >= number, 则执行commond
    一般上一条命令的执行结果代码只有两结果,"成功"用0 表示,"失败"用1 表示. 
    0 <= errorLevel <= 255
举例:
   (1)
    d:\cmd\05>net user
    d:\cmd\05>echo %errorLevel%
    0
    d:\cmd\05>net user1
    d:\cmd\05>echo %errorLevel%
    1
   (2) xcopy
    xcopy退出码说明:
        0  文件复制没有错误。 
        1  if errorlevel 2 echo。 
        2  用户按  CTRL+C  终止了 xcopy 。 
        4  出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。 
        5  出现了磁盘写入错误。
    要判断上面 xcopy 命令的5 种退出情况,应写成: 
        if errorlevel 5 echo 出现了磁盘写入错误 
        if errorlevel 4 echo 出现了初始化错误 
        if errorlevel 2 echo 用户按 CTRL+C  终止了 xcopy 
        if errorlevel 1 echo if errorlevel 2 echo 
        if errorlevel 0 echo 文件复制没有错误。 
    才能正确执行。
   (3) 1.bat => 交互式输入命令,判断是否执行成功
    @echo off
    set /p var=请输入命令及其参数:

    %var%

    if %errorLevel%==0 (
        goto success
    ) else (
        goto error
    )

    :success
        echo %var%  执行成功..
        pause
    goto :eof

    :error
        echo %var%  执行失败!!
        pause
    goto :eof

二, IF [NOT] string1==string2 commond
作用:
    比较字变量或者符串的值是不是相等的.
举例:
    (1) 2.bat => 输入两个字符串,比较是否相等
        @echo off
        set /p var1=请输入第一个字符串:
        set /p var2=请输入第二个字符串:

        if %var1%==%var2% (
            echo 相等````````    
        ) else (
            echo 不相等!!!!!!!

        )

        pause    

    (2) 3.bat => 字符串定界符(双引号),防止误输入空格
        d:\cmd\05>type 3.bat
        @echo off

        set /p var1=请输入第一个字符串:
        set /p var2=请输入第二个字符串:

        if "%var1%"=="%var2%" (
            echo 相等.......
        ) else (
            echo NO!!!!!!!!!
        )

        pause

        d:\cmd\05>3
        请输入第一个字符串:123
        请输入第二个字符串:456
        NO!!!!!!!!!
        
三, IF [NOT] EXIST filename command     
作用:
    判断某个文件或者文件夹是否存在的语法 
注意:
    路径如果有空格, 需要使用双引号
举例:
d:\cmd\05>if exist "d:\cmd\05\3.bat" @echo file is exist!
file is exist!


四, IF增强的用法
格式:
    IF string1 compare-op string2 command  # 参数 /I 表示不区分大小写 
    IF CMDEXTVERSION number command 
    IF DEFINED variable command  # 判断变量是否存在,很有用
说明:
  (1) compare-op
    EQU -  等于 
    NEQ -  不等于 
    LSS -  小于 
    LEQ -  小于或等于 
    GTR -  大于 
    GEQ -  大于或等于  
  (2) cmdExtVersion
    CMDEXTVERSION 条件的作用跟 ERRORLEVEL  的一样,
    除了它是在跟与命令扩展名有关联的内部版本号比较。
    第一个版本是 1 。每次对命令扩展名有相当大的增强时,版本号会增加一个。 
    命令扩展名被停用时,CMDEXTVERSION 条件不是真的。
  (3) defined
    DEFINED  条件的作用跟 EXISTS 的一样 
    如果 variable 定义了, 且不是 "set variable=", 则为真
    "set variable=" 使变量variable变成未定义.
    请注意 variable 为不使用引导符号%的变量名
举例:
  (1) 
    d:\cmd\05>set var=123
    d:\cmd\05>if defined var (@echo var is exist) else (@echo var is not exist!)
    var is exist
    d:\cmd\05>set var=
    d:\cmd\05>if defined var (@echo var is exist) else (@echo var is not exist!)
    var is not exist!
  (2)    
    d:\cmd\05>set /p var=please input a number:
    please input a number:5
    d:\cmd\05>if %var% gtr 4 (@echo YES) else (@echo NO)
    YES
    d:\cmd\05>set /p var=please input a number:
    please input a number:1
    d:\cmd\05>if %var% gtr 4 (@echo YES) else (@echo NO)
    NO