在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、判断驱动器、文件或文件夹是否存在,用 if exist 语句; if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。 对于以上四种情形,可以分别使用如下代码: 1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt) 判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。 判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表: 中文含义 关系符 英文解释 等于 equ equal if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。 学习if条件语句 学习要点:
例1 @echo off set /p var1=请输入第一个比较的字符: set /p var2=请输入第二个比软的字符: if "%var1%"=="%var2%" (echo 输入的两个字符相同) else echo 输入的两个字符不相同 pause 执行后会要求你输入两个字符串,然后批处理判断它俩是否相同。在判断字符串是否相等的时候,if是会区分大小写 例2 @echo off if "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同 pause 执行后会显示:输入的两个字符不相同 例3 @echo off if /i "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同 pause 这次执行后会显示:输入的两个字符相同
中文含义 关系符 英文解释 我们还是来看个例子, 例4 @echo off set /p var=请输入一个数字: if %var% geq 10 (echo 此数大于或等于10) else echo 此数小于10 pause 注意哦,批处理中的大于号,小于号,等于号等等都不能用:“>” “<” “=” 这些符号,而要用像"gtr"这类
【example 1】 @echo off if "12" lss "4" (echo 12竟然小于4哦?) else echo 12当然不会小于4的! pause 执行的结果是:12竟然小于4哦?
@echo off if 12 lss 4 (echo 12竟然小于4哦?) else echo 12当然不会小于4的! Pause 执行的结果是:12当然不会小于4的! 为什么【example 1】中加了双引号""会出错呢? 原因如下: ☆建议:如果是字符串的比较就使用双引号"" 是数字的比较就不用双引号了!
例5 @echo off if exist "e:" (echo e盘存在) else echo e盘不存在 pause>nul 这里是判断e: 是否存在! 例6 @echo off if exist d:\123.bat (echo 123.bat文件存在!) else echo 123.bat文件不存在! pause 这个例子是用来判断123.bat文件是否存在的,但并不严谨!如果123.bat是一个文件夹而不是一个文件时,上面的判 @echo off dir /a-d d:\123.bat >nul 2>nul if %errorlevel%==0 (echo 123.bat文件存在!) else echo 123.bat文件不存在! Pause 先用dir的/a-d参数去除123.bat的目录属性,指定说明要搜索的123.bat是文件而不是文件夹,并把结果(包括正确 例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 test\nul (echo test 是文件夹) else echo test 是文件 pause
例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 已定义 看了上面三个例子,你应该发现点什么了吧?现在我们应该知道了:当变量不存在或是值为空时,变量则为未定 大家来试一下下面的这两个例子, 例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
例13 @echo off net user if %errorlevel% == 0 (echo net user 命令执行成功) else (echo net user 命令执行失败) Pause 注意:%errorlevel% 这是个系统变量,所以用两个%括起来,这里的==为两个连续的= 例14 @echo off set /p input=请输入任意一条命令: if errorlevel 0 (echo %input% 命令执行成功) else (echo %input% 命令执行失败) pause 用这种语法,不管你前面的命令,是否执行成功,它都会认为命令成功了。何解?
一般上一条命令的执行结果返回的值只有两个,"成功"用0 表示 "失败"用 1 表示,实际上,errorlevel 返回值可 0复制文件成功
if条件语句的完整格式是:if 条件表达式 (语句1) 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" del "d:\123.txt" pause 补充1:if not 语句 在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盘当然是实实在在存在的啦,根椐上面的中文分得知,那执行例18后就显示为:C盘不存在 通过分析例18,你
例1 @echo off set a=55 if %a% geq 50 ( if %a% geq 80 ( if %a% geq 100 ( echo a大于等于100 ) else echo a小于100 ) else echo a小于80 ) else echo a小于50 pause 这是一种比较规范的写法,那这种写法是怎样写的呢?那我们一步步的来: 第一步: if %a% geq 50 ( ) else echo a小于50 第二步:在第一步geq 50 后面的括号()里按两下回车,主要是空两行出来。 if %a% geq 50 ( if %a% geq 80 ( )else echo小于80 ) else echo a小于50 第三步:在第二步geq 80 后面的括号()里按两下回车,主要是空两行出来。 if %a% geq 50 ( if %a% geq 80 ( if %a% geq 100 ( ) else echo a小于100 )else echo小于80 ) else echo a小于50 第四步:在第三步geq 100 后面的括号()里按两下回车,主要是空两行出来。 if %a% geq 50 ( if %a% geq 80 ( if %a% geq 100 ( echo a大于等于100 ) else echo a小于100 )else echo小于80 ) else echo a小于50 上面的代码中,if %a% 和 )else 要适当的缩进,以达到写书清晰! |
请发表评论