执行后显示:变量 a 已定义
看了上面三个例子,你应该发现点什么了吧?现在我们应该知道了:当变量不存在或是值为空时,变量则为未定
义。
当我们用if defined 变量 command 语句判断变量是否被定义时,请注意 变量 为不使用引导符号%的变量名,不
能用写为%变量%,否则出错。
大家来试一下下面的这两个例子,
例11
@echo off set var1=5 if defined var1 (echo 变量var1已定义) else (echo 变量var1没有被定义) set /p var2=请输入一个数字: if defined %var2% (echo 变量var2已定义) else (echo 变量var2没有被定义) pause
例12
@echo off set var1=5 if defined var1 (echo 变量var1已定义) else (echo 变量var1没有被定义) set /p var2=请输入一个数字: if defined var2 (echo 变量var2已定义) else (echo 变量var2没有被定义) pause
注意例11和例12哦:一个是%var2%而另一个是var2
5。判断上个命令的反回值,if errorlevel 数值 command 语句
这个语句是用于判断上一个命令执行的返回值errorlevel,我们还是先来看看例子,
例13
@echo off net user if %errorlevel% == 0 (echo net user 命令执行成功) else (echo net user 命令执行失败) Pause
注意:%errorlevel% 这是个系统变量,所以用两个%括起来,这里的==为两个连续的=
也许有些朋友说我上面的例子是不是写错了?按照语法应该写成“if errorlevel 0”才对的呀。
如果你是这样用的话,那你就错了,还真不信呀?OK,我们来设计个实验看看
例14
@echo off set /p input=请输入任意一条命令: if errorlevel 0 (echo %input% 命令执行成功) else (echo %input% 命令执行失败) pause
用这种语法,不管你前面的命令,是否执行成功,它都会认为命令成功了。何解?
if errorlevel 语句的特点:
当使用 if errorlevel 0 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于0 的时候,将执行cmmand
操作;
当使用 if %errorlevel%==0 cmmand 句式时,它含义是:如果返回的错误码值等于0 的时候,将执行cmmand操作。
一般上一条命令的执行结果返回的值只有两个,"成功"用0 表示 "失败"用 1 表示,实际上,errorlevel 返回值可
以在0~255 之间,
例如xcopy 默认的errorlevel 值就有5 个,分别表示5 种执行状态:
0复制文件成功
1 未找到复制文件
2 用户通过CTRL C 终止了xcopy操作
4 出现了初始化错误
5 出现了磁盘写入错误
对于if 条件语句,常用的也就上面那5条吧,下面我们来看一下它的两种格式:









