if语句一共有3种模式,如下:
- IF [NOT] string1==string2 command (else command)
- IF [NOT] EXIST filename command (else command)
- IF [NOT] ERRORLEVEL number command (else command)
NOT 指定只有条件为 false 的情况下, Windows XP 才应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true
string1==string2 如果指定的文字字符串匹配,指定条件为 true。
EXIST filename 如果指定的文件名存在,指定条件为 true。
command 如果符合条件,指定要执行的命令。
@echo off set dir=%~dp0 rem 测试字符串是否相等 set s="string" if "string"=%s% (echo 字符串相等) else echo 字符串不相等 rem 测试字符串是否存在 if exist test.bat echo test.bat is existed if not exist test.bat (echo test.bat is no existed) else echo test.bat is existed rem 测试errorlevel (errorlevel 是否大于或等于number,是则执行command) xcopy test.bat copy(copy是一个目录) echo %errorlevel% if errorlevel 1 echo 文件拷贝失败 if errorlevel 0 echo 文件拷贝成功 if errorlevel 5 echo 写盘错误
以下就是几个常用命令的返回值及其代表的意义: backup 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束 xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误