现在的位置: 首页 > 操作系统 > 正文

DOS批处理bat中IF判断语句的用法

2016年04月25日 操作系统 ⁄ 共 975字 暂无评论 ⁄ 阅读 979 次

【语法】

1)字符串比较

if [not] string1 == string2 command

字符串相等时执行某个命令,带not则为不等时

2)捕捉系统错误码

if [not] errorlevel number command

返回的错误码大于或等于指定数时执行命令,带not则为小于时

3)判断文件存在性

if [not] exist filename command

指定文件存在时执行某个命令,带not则为不存在时

4)扩展的字符串比较

如果命令扩展启用,则IF还有如下功能:

IF [/I] string1 compare-op string2 command

其中,compare-op(比较操作符)有:

EQU - 等于

NEQ - 不等于

LSS - 小于

LEQ - 小于或等于

GTR - 大于

GEQ - 大于或等于

参数/I指定不区分大小写,默认省略则区分大小写。

举例(配合choice):

需要注意的是,在各执行代码块内必须的goto end,然后设置一个end块,否则批处理命令将从上往下继续执行,造成选择y后把执行、不执行和取消全执行一次。

【else子句】

IF后可跟ELSE,不过else必须与if在同一行执行(不是你看到的在一行,而是程序认为的在一行)。但有时,我们的语句太长,而且逻辑复杂,分行来写会更清晰。这时,我们可以使用括号()将较长的命令行分行。由于括号的完整性,系统会在编译时将换行后的命令行合并成一行进行编译执行。

1)if与else不在同一行,造成else无效:

IF 1==2 echo 正确

ELSE echo 错误

2)if与else在同一行,但if后有命令,造成else无效:

IF 1==2 echo 正确 ELSE echo 错误

3)通过括号将else与if连成一行,else有效:

IF 1==2 (

echo 正确

) ELSE (

echo 错误

)

4)通过括号单独执行if后的命令,else有效:

IF 1==2 (echo 正确) ELSE echo 错误

【IF语句实现循环】

通过IF和GOTO配合可以实现循环功能,例如(实现倒计时电脑休眠):

【IF嵌套语句】

IF语句可以直接嵌套使用,但需要注意括号的使用。另外,若在嵌套语句中发生了变量值的变量,需要开启延迟变量,具体见DOS批处理BAT变量赋值及用户输入交互式赋值

» 声明:本站文章源于个人经验总结或书籍、互联网转载,内容仅用于个人学习,请勿转载,否则后果自负!

给我留言

留言无头像?