dos 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语句的关系符号见下表:

中文含义 关系符 英文解释

等于 equ equal
大于 gtr greater than
大于或等于 geq greater than or equal
小于 lss less than
小于或等于 leq less than or equal
不等于 neq no equal

  if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。

学习if条件语句

学习要点:
5种if语句的基本语法:
1。判断两个字符串是否相等,if "字符串1"=="字符串2" command 语句;
2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句;
3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句;
4。判断变量是否已经定义,if defined 变量 command 语句;
5。判断上个命令的返回值,if errorlevel 数值 command 语句。
------------------------------------------------------------------------------------------------------

1。判断两个字符串是否相等,if"字符串1"=="字符串2" command 语句
   注意:在"字符串1"=="字符串2"中,是两个连续的"="

例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

执行后会显示:输入的两个字符不相同
如果我们不想让它区分大小写,则可以加上/i 参数。再看下面这个例子,

例3

@echo off
if /i "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同
pause

这次执行后会显示:输入的两个字符相同
------------------------------------------------------------------------------------------------------

2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句
语句中的equ 表示相等的意思,判断两个数值之间的大小关系还有以下关系符号:

中文含义       关系符       英文解释
等于            equ          equal
大于            gtr          greater than
大于或等于      geq          greater than or equal
小于            lss           less than
小于或等于      leq          less than or equal
不等于          neq          no equal

我们还是来看个例子,

例4

@echo off
set /p var=请输入一个数字:
if %var% geq 10 (echo 此数大于或等于10) else echo 此数小于10
pause

注意哦,批处理中的大于号,小于号,等于号等等都不能用:“>”  “<”  “=” 这些符号,而要用像"gtr"这类
的。

☆注意:if 比较字符串与比较数字 之间的区别,它们的区别体现在引号""上面,请看下面的例子

【example 1】

@echo off
if "12" lss "4" (echo 12竟然小于4哦?) else echo 12当然不会小于4的!
pause

执行的结果是:12竟然小于4哦?

【example 2】

@echo off
if 12 lss 4 (echo 12竟然小于4哦?) else echo 12当然不会小于4的!
Pause

执行的结果是:12当然不会小于4的!

为什么【example 1】中加了双引号""会出错呢?

原因如下:
   如果要比较的两个元素加了双引号"",那么会被当成是字符的比较。两个元素作比较的流程是:先比较两个元素
的首位,如果首位相同,再比较第二位,如果第二位相同,再比较第三位。。。依此,在【example 1】if "12" lss
 "4" 语句中,实质是1与4的比较,1当然小于4,所以执行了后面的命令:echo 12竟然小于4哦?

☆建议:如果是字符串的比较就使用双引号"" 是数字的比较就不用双引号了!
------------------------------------------------------------------------------------------------------

3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句
我们来瞧瞧这个判断驱动器,文件或者文件夹是否存在的语句,这里if exist filename 是表示:存在 filename的
意思。

例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是一个文件夹而不是一个文件时,上面的判
断就不行了!那么如何判断指定的文件123.txt是否存在?请看:

@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是文件而不是文件夹,并把结果(包括正确
和错误)屏蔽(>nul 2>nul),如果dir找到了文件123.bat,那么其errorlevel值(dir命令的退出编码)会被设为0,否
则为1则是没有此文件。当然也可以用||和&&来判断。关于为什么要用if %errorlevel%==0 而不用if errorlevel 0
呢?在后面if errorlevel中会有说明!

例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

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" del "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参数是怎么用了吧!

补充2:IF语句嵌套的写法,我们先来看看

例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 要适当的缩进,以达到写书清晰!

(0)

相关推荐

  • bat中errorlevel与%errorlevel%的区别

    他们都是判断上个命令的返回值.当使用if errorlevel 值 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于值 的时候,将执行cmmand 操作: 当使用if %errorlevel%==值 cmmand 句式时,它含义是:如果返回的错误码值等于值 的时候,将执行cmmand操作. 一般上一条命令的执行结果返回的值只有两个,"成功"用0 表示 "失败"用 1 表示,实际上,errorlevel 返回值可以在0~255 之间, 例如xcopy 默

  • bat If 命令常用判断介绍

    If 命令 if 表示将判断是否符合规定的条件,从而决定执行不同的命令. 有三种格式: 1).if "参数" == "字符串" 待执行的命令  参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句.(注意是两个等号) 如if "%1"=="a" format a:  if {%1}=={} goto noparms  if {%2}=={} goto noparms 2).if exist 文件名 待执行的命令 如果

  • bat批处理 if 命令示例详解

    if 命令示例详解 if,正如它E文中的意思,就是"如果"的意思,用来进行条件判断.翻译过来的意思就是:如果符合某一条件,便执行后面的命令. 主要用来判断,1.两个"字符串"是否相等:2.两个数值是大于.小于.等于,然后执行相应的命令. 当然还有特殊用法,如结合errorlevel:if errorlevel 1 echo error 或者结合defined(定义的意思):if defined test (echo It is defined) else echo 

  • cmd if条件 条件判断

    1.判断驱动器.文件或文件夹是否存在,用 if exist 语句: 2.判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句: 3.判断某两个数值是否相等,用 if 数值1 equ 数值2 语句: 4.判断某个变量是否已经被赋值,用 if defined str 语句: if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2. 对于以上四种情形,可以分别

  • dos中一些常用命令的errorlevel返回值

    ATTRIB.EXE(a) Target file/folder not found                    = ERRORLEVEL 1(b) Invalid switch                                  = ERRORLEVEL 1(c) Sharing violation (target file in use)          = ERRORLEVEL 1(d) Invalid drive specification           

  • IF-ERRORLEVEL使用方法

    今天远程一个客户,发现他的服务器会不定时自动断开网络,导致客户端连接不了服务端,但是重启服务以后又恢复正常,初步判断可能是由于某个系统服务与winpacp有冲突,建议用户恢复操作系统,他想等晚上再开始操作,今天就只好一直运行个ping,发现timed out就手动重启服务.我记得if可以利用程序的返回值作为判断,就帮他写了这个脚本: 复制代码 代码如下: @echo off: pping 61.152.XX.XXIF ERRORLEVEL 1 goto aaIF ERRORLEVEL 0 got

  • dos if 条件判断

    1.判断驱动器.文件或文件夹是否存在,用 if exist 语句: 2.判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句: 3.判断某两个数值是否相等,用 if 数值1 equ 数值2 语句: 4.判断某个变量是否已经被赋值,用 if defined str 语句: if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2. 对于以上四种情形,可以分别

  • Swift条件判断中逗号的使用方法示例

    前言 众所周知在Swift语言中,Bool值是用来进行条件判断的,可以进行&&以及||的操作,从而实现多个表达式共同判断. 但是由于Swift中存在可选项绑定,或者说是用let展开可选项的原因,有些地方条件判断中不能够使用&&来进行处理.比如,我们要在变量hasValue确实有值,且参数个数paramCount大于0的时候,执行代码,一般我们可以这样写: if hasValue != nil && paramCount > 0 { ... } 但是如果

  • Swift中的条件判断、循环、跳转语句基础学习笔记

    一.引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情.Swift中提供了许多强大的流程控制语句,例如快速遍历for-in,while循环,repeat-while循环,switch选择等,需要注意的是,在Swift2.2中,for(a;b;c)循环已经被弃用掉,并且Swift中的Switch语句也更加强大,可以处理任意数据类型. 二.for-in循环 配合范围运算符,for-in循环可以用来执行确定次数的循环,示例如下:

  • Shell脚本IF条件判断和判断条件总结

    前言:       无论什么编程语言都离不开条件判断.SHELL也不例外. 复制代码 代码如下: if list then           do something here       elif list then           do another thing here       else          do something else here       fi EX1: 复制代码 代码如下: #!/bin/sh SYSTEM=`uname -s`    #获取操作系统类

  • JavaScript条件判断_动力节点Java学院整理

    JavaScript使用if () { ... } else { ... }来进行条件判断.例如,根据年龄显示不同内容,可以用if语句实现如下: var age = 20; if (age >= 18) { // 如果age >= 18为true,则执行if语句块 alert('adult'); } else { // 否则执行else语句块 alert('teenager'); } 其中else语句是可选的.如果语句块只包含一条语句,那么可以省略{}: var age = 20; if (a

  • php中smarty模板条件判断用法实例

    本文实例讲述了php中smarty模板条件判断用法.分享给大家供大家参考.具体实现方法如下: 模板文件test6.html代码: <html> <head> <title>Smarty Test</title> </head> <body> <table width="200" border="0"> {if $cond == 1} <tr> <td>条件成立

  • Python中条件判断语句的简单使用方法

    最简单的条件语句: if expression: expr_true_suite 如上,if是关键字,expression是条件表达式,条件表达式支持多重条件判断,可以用布尔操作符and.or和not连接,expr_true_suite是代码块,expression为true时执行,代码块如果只有一行,上面的整个条件语句便可全部写到一行,但可读性差. 带elif和else的条件语句: if expression1: expr1_true_suite elif expression2: expr2

  • javascript里的条件判断

    JavaScript 是一种可以在浏览器中运行的脚本语言,是一种弱语言(相对于C,C#,JAVA而言),只要是计算机语言就会使用到条件判断式,而JavaScript作为一种"弱"语言,它的条件判断常常令人困惑不解,特别是有其它强语言编程经历的人来说,更是不可理喻!高手和无惑的人别取笑,我自己也曾经有一段时间郁闷过.先写一个例子吧: var s = "meizz"; if (s && s==true) {     alert("Is true

  • Javascript 篱式条件判断

    考虑下面的代码 if (node.nextSibling.className == ...) { ... } 在 node 或者 node.nextSibling 为空(null)的情况下,会返回错误(error).所以,通常情况下的解决方案的代码为 if ((node) && (next = node.nextSibling) && ... ) { ... } 那么,当条件判断一多的情况下,代码会形成下面的情况 if ( (node) && (node.n

  • Javascript条件判断使用小技巧总结

    考虑下面的代码 if (node.nextSibling.className == ...) { ... } 在 node 或者 node.nextSibling 为空(null)的情况下,会返回错误(error).所以,通常情况下的解决方案的代码为 if ((node) && (next = node.nextSibling) && ... ) { ... } 那么,当条件判断一多的情况下,代码会形成下面的情况 if ( (node) && (node.n

随机推荐