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 待续 |