dos if 条件判断

2019-09-19 06:58:45王振洲

执行后显示:变量 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条吧,下面我们来看一下它的两种格式:

相关文章 大家在看