if用于条件判断,适用于以下情形:
1、判断驱动器、文件或文件夹是否存在,用 if exist 语句;
2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
4、判断某个变量是否已经被赋值,用 if defined str 语句;
if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。
对于以上四种情形,可以分别使用如下代码:
1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。
判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:
if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。
</>code
- @echo off
- set "str=this is a test"
- REM 检测变量%str%是否等于test,如果相等,显示OK,否则显示NO
- if "%str%"=="test" (echo OK) else echo NO
- pause>nul
</>code
- @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
</>code
- @ECHO OFF
- XCOPY F:\test.bat D:\
- IF ERRORLEVEL 1 ECHO 文件拷贝失败
- IF ERRORLEVEL 0 ECHO 成功拷贝文件
</>code
- 附录:
- 以下就是几个常用命令的返回值及其代表的意义:
- 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 拷贝过程中写盘错误
</>code
- @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
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛