• DOS批处理命令-if语句


    IF语句是批处理中执行的条件分歧处理。

    批处理中,IF分歧的写法有好几种,接下来,我们来一个一个的分析IF语法的结构。

    1、IF [NOT] ERRORLEVEL 番号 批处理命令

    当ERRORLEVEL的值大于等于指定的番号的值时,执行指定的批处理命令。

    @echo off
    
    call :called0
    IF ERRORLEVEL 100 (
        echo ERRORLEVEL = %ERRORLEVEL%
    )
    
    call :called1
    IF ERRORLEVEL 100 (
        echo ERRORLEVEL = %ERRORLEVEL%
    )
    
    call :called2
    IF ERRORLEVEL 100 (
        echo ERRORLEVEL = %ERRORLEVEL%
    )
    
    exit /b 200
    
    :called0
    SETLOCAL
        echo called0
        exit /b 99
    ENDLOCAL
    
    :called1
    SETLOCAL
        echo called1
        exit /b 100
    ENDLOCAL
    
    :called2
    SETLOCAL
        echo called2
        exit /b 101
    ENDLOCAL

    运行的结果为:

    C:Usersliuhongying>F: mpa.bat

    called0
    called1
    ERRORLEVEL = 100
    called2
    ERRORLEVEL = 101

    发现,在返回值跟100比的时候,只有等于100和大于100的时候,执行到了下面的批处理命令,而在99的时候,就没有执行批处理命令,这个测试你结果,你就应该明白了吧!

    2、IF [NOT] 文字列1==文字列2 批处理命令

    这个判断是比较文字列1和文字列2是不是相等,如果是变量,就要用%来取出变量的值来比较。

    IF [/I] [NOT] 文字列1==文字列2 批处理命令

    有一个控制开关,/I,是控制比较的时候是不是忽略大小写。如果有/I这个开关存在的时候,比较的时候就会忽略大小写去比较。

    看看下面这个例子,你就 应该全部明白了。

    @echo off
    
    IF abcdef==abcdef (
        echo abcdef==abcdef
    )
    
    IF AbCdEF==abcdef (
        echo AbCdEF==abcdef
    )
    
    IF /I ABCDEF==abcdef (
        echo ABCDEF==abcdef
    )
    
    IF /I AbCdEF==abcdef (
        echo AbCdEF==abcdef
    )

    F: mp>a.bat
    abcdef==abcdef
    ABCDEF==abcdef
    AbCdEF==abcdef

    3、IF [NOT] EXIST 文件名 批处理命令

    帮助上面写的是判断文件名是否存在,其实,这个判断方法既可以判断文件是否存在,又可以判断路径是不是存在。

    @echo off
    
    IF EXIST F:	mpa.bat (
        echo EXIST:F:	mpa.bat
    )
    
    IF EXIST F:	mp (
        echo EXIST:F:	mp
    )

    执行结果:

    F: mp>a.bat
    EXIST:F: mpa.bat
    EXIST:F: mp

    4、IF [/I] 文字列1 比較演算子 文字列2 批处理命令

    对文字列1和文字列2按照比较演算子进行比较,比较结果为真的时候,就执行批处理命令指定的处理。

    下面对几种比较演算子进行进行介绍。

    EQU - 等于(等しい)
    NEQ - 不等于(等しくない)
    LSS - 小于(より小さい)
    LEQ - 小于等于(以下)
    GTR - 大于(より大きい)
    GEQ - 大于等于(以上)

    下边这个例子,对这几个判断符进行解说

    @echo off
    
    echo EQU
    IF a EQU a (
        echo a EQU a
    )
    
    IF a EQU b (
        echo a EQU b
    )
    
    echo NEQ
    IF a NEQ a (
        echo a NEQ a
    )
    
    IF a NEQ b (
        echo a NEQ b
    )
    
    echo LSS
    IF a LSS a (
        echo a LSS a
    )
    
    IF a LSS b (
        echo a LSS b
    )
    
    IF b LSS a (
        echo b LSS a
    )
    
    echo LEQ
    IF a LEQ a (
        echo a LEQ a
    )
    
    IF a LEQ b (
        echo a LEQ b
    )
    
    IF b LEQ a (
        echo b LEQ a
    )
    
    echo GTR
    IF a GTR a (
        echo a GTR a
    )
    
    IF a GTR b (
        echo a GTR b
    )
    
    IF b GTR a (
        echo b GTR a
    )
    
    echo GEQ
    IF a GEQ a (
        echo a GEQ a
    )
    
    IF a GEQ b (
        echo a GEQ b
    )
    
    IF b GEQ a (
        echo b GEQ a
    )

    运行结果为:

    F: mp>a.bat
    EQU
    a EQU a
    NEQ
    a NEQ b
    LSS
    a LSS b
    LEQ
    a LEQ a
    a LEQ b
    GTR
    b GTR a
    GEQ
    a GEQ a
    b GEQ a

    5、IF CMDEXTVERSION 番号 批处理命令

    最初的CMDEXTVERSION的值是1,当扩展命令可以使用的时候,CMDEXTVERSION的值就比1大了。

    并且,当扩张技能无效的时候,这个表达式命题恒为假。

    更加具体的作用,这里不去探讨了,如果以后有需要,用到了,在去追加吧!

    6、IF DEFINED 変数 批处理命令

    如果指定的变数定义的时候,就执行批处理命令指定的处理。更加准确的描述应该是,指定的便是的值是空的时候,句执行批处理命令指定的处理。

    @echo off
    
    set var1=abc
    set var3=
    set var4=   
    
    IF DEFINED var1 (
        echo DEFINED var1
    )
    
    IF DEFINED var2 (
        echo DEFINED var2
    )
    
    IF DEFINED var3 (
        echo DEFINED var3
    )
    
    IF DEFINED var4 (
        echo DEFINED var4
    )

    *var3=后面是没有设置空格

    *var4=后面是设置空格的

    运行结果为:

    F: mp>a.bat
    DEFINED var1
    DEFINED var3

    PS:以上的语法介绍中,都没有详细介绍另个重要点

    A:所有加[NOT]的地方,如果加了NOT以后,就将判断的调节取反。

    B:所有的命令都没有介绍else的语法,所有的IF判断,都是可以再行后最佳【else 批处理命令】,也就是说,当判断条件不成立的时候,执行批处理命令指定的处理。

      更推荐的写法是,所有批处理命令都加上小括号,如下述结果

    IF 条件 (
        条件为真的时候的处理
    ) else (
        条件为假的时候的处理
    )
  • 相关阅读:
    javascript 中 "undefined" 与 "is not defined" 分析
    css常用总结
    关于reset.css的疑问:为什么一定要重置浏览器样式?
    一些关于Viewport与device-width的东西~
    JS获取IMG图片高宽
    一个input标签搞定含内外描边及阴影的按钮~
    javascript 取整,取余数
    我刚知道的WAP app中meta的属性
    使用 jquery 获取当前时间的方法
    当前头像跟随着当前内容移动...(修改版)
  • 原文地址:https://www.cnblogs.com/gekal/p/3220397.html
Copyright © 2020-2023  润新知