有关windows中批处理的应用

发布时间:2020-11-06编辑:脚本学堂
有关windows中批处理的应用,东西很多,有需要的朋友参考下吧。

例7,
 

复制代码 代码如下:
@echo off
if exist test (echo test 是文件夹) else echo test 是文件
pause
 

这里是判断文件夹是否存在。对于文件夹存在的判断,我们不可以用以下两种写法:
第①种
 

复制代码 代码如下:
@echo off
if exist test. (echo test 是文件夹) else echo test 是文件
pause

第②种
@echo off
if exist testnul (echo test 是文件夹) else echo test 是文件
pause

4。判断变量是否已经定义,if defined 变量 command 语句

这是一个判断变量是否已被定义的语句,我们还是先看例子,

例8,
 

复制代码 代码如下:
@echo off
if defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)
pause
 

执行后显示:变量 a 没有被定义

例9,
 

复制代码 代码如下:
@echo off
set a=
if defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)
pause
 

执行后显示:变量 a 没有被定义
注意:set a=这后面是没有空格的。

例10,
 

复制代码 代码如下:
@echo off
set a=10
if defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)
pause
 

执行后显示:变量 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条吧,下面我们来看一下它的两种格式:
if条件语句的完整格式是:if 条件表达式 (语句1) else (语句2)
它的含义是:如果 条件表达式 成立,就执行 语句1,否则,将执行 语句2。  else后的 语句2 也可以不用括号括起。

if条件语句的简单格式是:if 条件表达式 (语句)
它的含义是:如果 条件表达式 成立,将执行 语句,否则,什么都不做。条件表达式后的 语句 也可以不用括号括起。

例15,
 

复制代码 代码如下:
@echo off
if exist "d:123.txt" (del "d:123.txt")
pause

你也可以写成下面这样哦~

例16,
 

复制代码 代码如下:
@echo off
if exist "d:123.txt" "d:123.txt"
pause

补充1:if not 语句
对于if 语句前面的5种基本语法,都可以加上not参数,如
1。if not "字符串1"=="字符串2" command 语句;
2。if not数值1 equ 数值2 command 语句;
3。If not exist filename command 语句;
4。if not defined 变量 command 语句;
5。if not errorlevel 数值 command 语句。

在if 条件表达式 (语句) 语句,如没有not参数,默认是判断条件成立时,执行语句;如有not参数,判断条件失败时,执行语句。

我们看下面的例子:

例17,
 

复制代码 代码如下:
@echo off
if exist "c:" (echo  C盘存在) else echo  C盘不存在
pause

执行后显示:C盘存在

例18,
 

复制代码 代码如下:
@echo off
if not exist "c:" (echo  C盘存在) else echo  C盘不存在
pause

执行后显示:C盘不存在
不会吧,例18中执行后显示:C盘不存在,这简值是在说瞎话了,那到底是什么回事呢?

if not exist "c:" (echo  C盘存在) else echo  C盘不存在
此语句中文意思:如果不存在C: 就执行显示C盘存在;否则<指的是存在C:>就执行显示C盘不存在。
注:if exist 意为如果存在,那么if not exist就是如果不存在

你的C盘当然是实实在在存在的啦,根椐上面的中文分得知,那执行例18后就显示为:C盘不存在  通过分析例18,你应该明白if语句中not参数是怎么用了吧!