电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

bat批处理 if 命令示例详解


发布日期:2021/11/4
 
if命令示例详解

if正如它E文中的意思就是如果的意思用来进行条件判断翻译过来的意思就是如果符合某一条件便执行后面的命令

主要用来判断两个字符串是否相等两个数值是大于小于等于然后执行相应的命令

当然还有特殊用法如结合errorleveliferrorlevelechoerror

或者结合defined(定义的意思):ifdefinedtest(echoItisdefined)elseechoItisntdefined

用法示例

检测字符串(注意用if检测字符串是否相等的时候后面用的不是=而是==)

复制代码 代码如下:

@echooff

setstr=thisisatest

REM检测变量%str%是否等于test如果相等显示OK否则显示NO

if%str%==test(echoOK)elseechoNO

pause>nul

检测数值(注意批处理中大于符号不能用>而用gtr其它的也类似)

比较运算符一览

EQU等于

NEQ不等于

LSS小于

LEQ小于或等于

GTR大于

GEQ大于或等于

检测数值是否大于演示代码

复制代码 代码如下:

@echooff

set/anum=

set/anum=

if%num%gtr%num%echo%num%大于%num%

if%num%EQU%num%echo%num%等于%num%

if%num%LSS%num%echo%num%小于%num%

pause>nul

if结合errorlevel使用

说明环境变量errorlevel的初始值为当一些命令执行不成功就会返回一个数值

IFERRORLEVEL

测试代码

复制代码 代码如下:

@ECHOOFF

XCOPYF:\testbatD:\

IFERRORLEVELECHO文件拷贝失败

IFERRORLEVELECHO成功拷贝文件

如果文件拷贝成功屏幕就会显示成功拷贝文件否则就会显示文件拷贝失败

IFERRORLEVEL是用来测试它的上一个DOS命令的返回值的注意只是上一个命令的返回值而且返回值必须依照从大到小次序顺序判断

因此下面的批处理文件是错误的

@ECHOOFF

XCOPYC:\AUTOEXECBATD:\

IFERRORLEVELECHO成功拷贝文件

IFERRORLEVELECHO未找到拷贝文件

IFERRORLEVELECHO用户通过ctrlc中止拷贝操作

IFERRORLEVELECHO预置错误阻止文件拷贝操作

IFERRORLEVELECHO拷贝过程中写盘错误

无论拷贝是否成功后面的

未找到拷贝文件

用户通过ctrlc中止拷贝操作

预置错误阻止文件拷贝操作

拷贝过程中写盘错误

都将显示出来

复制代码 代码如下:

附录

以下就是几个常用命令的返回值及其代表的意义

backup

备份成功

未找到备份文件

文件共享沖突阻止备份完成

用户用ctrlc中止备份

由于致命的错误使备份操作中止

diskcomp

盘比较相同

盘比较不同

用户通过ctrlc中止比较操作

由于致命的错误使比较操作中止

预置错误中止比较

diskcopy

盘拷贝操作成功

非致命盘读/写错

用户通过ctrlc结束拷贝操作

因致命的处理错误使盘拷贝中止

预置错误阻止拷贝操作

format

格式化成功

用户通过ctrlc中止格式化处理

因致命的处理错误使格式化中止

在提示proceedwithformat(y/n)?下用户键入n结束

xcopy

成功拷贝文件

未找到拷贝文件

用户通过ctrlc中止拷贝操作

预置错误阻止文件拷贝操作

拷贝过程中写盘错误

if还有一个特殊的用法就是可以用来检测某个变量是否已经被定义

用法示例

复制代码 代码如下:

@echooff

setstr=ok

setstr=no

ifdefinedstrechostr已经被定义

ifdefinedstrechostr已经被定义

ifdefinedstr(echostr已经被定义)elseechostr没有被定义

pause>nul

待续

上一篇:可以使用的批处理参数集合

下一篇:DOS未公开命令与参数列表