当前位置: 首页 > 图文教程 > 脚本技术 > DOS/BAT > bat批处理 if 命令示例详解

DOS/BAT
每天按时 重启服务器 的批处理
Netsh 命令备份和恢复网络设置
批处理 Set 命令详解 让你理解set命令
cd命令 目录跳转
cmd tree命令 以树形格式罗列文件
dos 内容重定向符 >和>>
cmd if条件 条件判断
cmd goto命令 流程跳转
cmd copy命令 文件复制
cmd del命令 文件删除
cmd ren命令 重命名文件(夹)
cmd md命令 创建文件夹
cmd rd命令 删除文件夹
cmd move命令 移动文件(夹)
字符串查找 cmd find命令
常用的批处理实用技巧
批处理 添加隐藏用户代码
服务器 安全设置 批处理
WIN2003 服务器安全配置批处理文件
批处理 实现定时关机、注销、重启、锁定等功能

DOS/BAT 中的 bat批处理 if 命令示例详解


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 137 ::
收藏到网摘: n/a

if 命令示例详解
if,正如它E文中的意思,就是“如果”的意思,用来进行条件判断。翻译过来的意思就是:如果符合某一条件,便执行后面的命令。
主要用来判断,1、两个“字符串”是否相等;2、两个数值是大于、小于、等于,然后执行相应的命令。
当然还有特殊用法,如结合errorlevel:if errorlevel 1 echo error
或者结合defined(定义的意思):if defined test (echo It is defined) else echo It isn't defined
用法示例:
1、检测字符串(注意,用if检测字符串是否相等的时候,后面用的不是“=”,而是“==”):
复制代码 代码如下:

@echo off
set "str=this is a test"
REM 检测变量%str%是否等于test,如果相等,显示OK,否则显示NO
if "%str%"=="test" (echo OK) else echo NO
pause>nul

2、检测数值:(注意,批处理中大于符号不能用:“>”,而用"gtr",其它的也类似)
比较运算符一览:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
检测数值 20 是否大于 15演示代码:
复制代码 代码如下:

@echo off
set /a num1=20
set /a num2=15
if %num1% gtr %num2% echo %num1%大于%num2%
if %num1% EQU %num2% echo %num1%等于%num2%
if %num1% LSS %num2% echo %num1%小于%num2%
pause>nul

3、if结合errorlevel使用:
说明:环境变量errorlevel的初始值为0,当一些命令执行不成功,就会返回一个数值,如:1 ,2 等
IF-ERRORLEVEL
测试代码:
复制代码 代码如下:

@ECHO OFF
XCOPY F:\test.bat D:\
IF ERRORLEVEL 1 ECHO 文件拷贝失败
IF ERRORLEVEL 0 ECHO 成功拷贝文件

如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。
IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。
因此下面的批处理文件是错误的:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO 成功拷贝文件
IF ERRORLEVEL 1 ECHO 未找到拷贝文件
IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作
IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作
IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误
无论拷贝是否成功,后面的:
未找到拷贝文件
用户通过ctrl-c中止拷贝操作
预置错误阻止文件拷贝操作
拷贝过程中写盘错误
都将显示出来。
复制代码 代码如下:

附录:
以下就是几个常用命令的返回值及其代表的意义:
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 拷贝过程中写盘错误

4、if还有一个特殊的用法就是可以用来检测某个变量是否已经被定义
用法示例:
复制代码 代码如下:

@echo off
set "str1=ok"
set "str2=no"
if defined str1 echo str1已经被定义
if defined str2 echo str2已经被定义
if defined str3 (echo str3已经被定义) else echo str3 没有被定义
pause>nul

待续....