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:\Users\liuhongying>F:\tmp\a.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:\tmp>a.bat
abcdef==abcdef
ABCDEF==abcdef
AbCdEF==abcdef

 

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

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

@echo off



IF EXIST F:\tmp\a.bat (

    echo EXIST:F:\tmp\a.bat

)



IF EXIST F:\tmp (

    echo EXIST:F:\tmp

)

执行结果:

F:\tmp>a.bat
EXIST:F:\tmp\a.bat
EXIST:F:\tmp

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:\tmp>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:\tmp>a.bat
DEFINED var1
DEFINED var3

 

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

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

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

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

IF 条件 (

    条件为真的时候的处理

) else (

    条件为假的时候的处理

)

你可能感兴趣的:(dos)