批处理if多个条件 bat批处理 if 命令示例详解
bat批处理 if 命令示例详解
if 命令示例详解 if 正如它E文中的意思 就是 如果 的意思 用来进行条件判断 翻译过来的意思就是 如果符合某一条件 便执行后面的命令 主要用来判断 两个 字符串 是否相等 两个数值是大于 小于 等于 然后执行相应的命令 当然还有特殊用法 如结合errorlevel if errorlevel echo error 或者结合defined(定义的意思):if defined test (echo It is defined) else echo It isn t defined 用法示例 检测字符串(注意 用if检测字符串是否相等的时候 后面用的不是 = 而是 == )复制代码 代码如下:
@echo off set str=this is a test REM 检测变量%str%是否等于test 如果相等 显示OK 否则显示NO if %str% == test (echo OK) else echo NO pause>nul
检测数值 (注意 批处理中大于符号不能用 > 而用 gtr 其它的也类似) 比较运算符一览 EQU 等于 NEQ 不等于 LSS 小于 LEQ 小于或等于 GTR 大于 GEQ 大于或等于 检测数值 是否大于 演示代码复制代码 代码如下:
@echo off set /a num = set /a num = 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的初始值为 当一些命令执行不成功 就会返回一个数值 如 等 IF ERRORLEVEL 测试代码复制代码 代码如下:

@ECHO OFF XCOPY F:test bat D: IF ERRORLEVEL ECHO 文件拷贝失败 IF ERRORLEVEL ECHO 成功拷贝文件
如果文件拷贝成功 屏幕就会显示 成功拷贝文件 否则就会显示 文件拷贝失败 IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的 注意只是上一个命令的返回值 而且返回值必须依照从大到小次序顺序判断 因此下面的批处理文件是错误的 @ECHO OFF XCOPY C:AUTOEXEC BAT D: IF ERRORLEVEL ECHO 成功拷贝文件 IF ERRORLEVEL ECHO 未找到拷贝文件 IF ERRORLEVEL ECHO 用户通过ctrl c中止拷贝操作 IF ERRORLEVEL ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL ECHO 拷贝过程中写盘错误 无论拷贝是否成功 后面的 未找到拷贝文件 用户通过ctrl c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来复制代码 代码如下:
附录 以下就是几个常用命令的返回值及其代表的意义 backup 备份成功 未找到备份文件 文件共享冲突阻止备份完成 用户用ctrl c中止备份 由于致命的错误使备份操作中止 diskp 盘比较相同 盘比较不同 用户通过ctrl c中止比较操作 由于致命的错误使比较操作中止 预置错误中止比较 diskcopy 盘拷贝操作成功 非致命盘读/写错 用户通过ctrl c结束拷贝操作 因致命的处理错误使盘拷贝中止 预置错误阻止拷贝操作 format 格式化成功 用户通过ctrl c中止格式化处理 因致命的处理错误使格式化中止 在提示 proceed with format(y/n)? 下用户键入n结束 xcopy 成功拷贝文件 未找到拷贝文件 用户通过ctrl c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误
if还有一个特殊的用法就是可以用来检测某个变量是否已经被定义 用法示例复制代码 代码如下:
待续 lishixinzhi/Article/program/qrs/201405/31032