×

BAT 条件判断 IF

hqy hqy 发表于2022-08-17 08:43:34 浏览684 评论0

抢沙发发表评论

mportant;">参考文章:BAT 条件判断 IF

bat脚本里面if else if的写法


bat脚本里面if else if的写法

第一种写法:最简单,就是写一行。


@echo off

rem 写一行比较简洁,缺点是每一种判断内不方便写多条语句

set varA=B

if "%varA%"=="A" (echo %varA% is A) else if "%varA%"=="B" (echo %varA% is B) else (echo %varA% is C)

 

pause

@echo off 

title "copy UI"

 

:: userName passwd srcDir trgtDir

echo 1: %1

echo 2: %2

set aaa=%1

:: "\\"需要写成"\\\\"

if not %aaa:~0,2% == \\\\ (

    set net_addr=%1

)  else  (

    set net_addr=%2

)

 

echo %net_addr%

 

pause


第二种写法:可读性好的语法是分行写


@echo off

rem 在这种写法可读性好,也能执行多语句,但兼容性不太好

set varA=B

if "%varA%"=="A" (

    echo %varA% is A

    echo AAA

) else if "%varA%"=="B" (

    echo %varA% is B

    echo BBB

) else (

    echo %varA% is C

    echo CCC

)

 

pause

 第三种写法:可读性好的语法是分行写的加强版


@echo off

rem 可读性好,兼容性好

 

setlocal EnableDelayedExpansion

set option=2

set sum=-1

 

if %option% == 3 ( 

  echo three 

  set /a sum=%option%*%option%*%option%

) ^

else if %option% == 2 ( 

  echo two 

  set /a sum=2*%option%

) ^

else if %option% == 1 ( 

  echo one 

  set /a sum=%option% 

) ^

else ( 

  echo zero 

  set /a sum=0 

)

 

echo sum = !sum!

 

pause


总结: 


    if 语句与左括号 ( 同行

    右括号 ) 不与 else if 同行

    右括号 ) 后面加上续行操作符 ^


示例

示例1


@echo off

if exist "C:\Documents and Settings\Administrator\桌面\T1\txt\批处理实验\unit1\a.txt" (

  echo file is find!

del "C:\Documents and Settings\Administrator\桌面\T1\txt\批处理实验\unit1\a.txt"

) else (

  echo file is not found!

)

pause>nul 

示例2


@ echo  off

if  abc==ABC (

    echo  abc euqal ABC

)  else  (

    echo  abc not euqal ABC

)

pause>nul

 示例3


@ echo  off

if  %errorlevel%==0 (

   echo  success!

)  else  (

   echo  failed!

)

pause>nul

示例4


@ echo  off

#判断文件是否存在

if  exist C:\a.txt (

   echo  file  is  find !

del C:\a.txt

)  else  (

   echo  file  is not found!

)

pause>nul

 示例5


@ echo  off

set  var1=123

set  var2=abc

set  var3=12

#字符串比较

if  /i  %var2% equ ABC (

   if  %var1% geq %var3% (

     echo  %var1%^>=%var3%

   )  else  (

     echo  %var1%^<%var3%

   )

)  else  (

   echo  %var2%不等于ABC

)

pause>nul

操作数可以是字符串也可以是数值,同时还可以是变量;

    "/I"选项用于开启比较过程中字符串大小写忽略功能;

在命令扩展下支持的比较运算符有:

    "equ(等于)"、"neq(不等于)"、"lss(小于)"、"leq(小于等于)"、"gtr(大于)"、"geq(大于等于)"六种,


    其中"lss"、"leq"、"gtr"和"geq"四种比较操作符主要用于对数值进行比较,

    当参与比较的字符串是字符串时,将被转换为对于的ASCII码进行比较;

    而"equ"和"neq"既可以比较数值也可以比较字符串。


if用于条件判断,适用于以下情形:

判断驱动器、文件或文件夹是否存在,用 if exist 语句;

判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;

判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;

判断某个变量是否已经被赋值,用 if defined str 语句;

  if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。


  对于以上四种情形,可以分别使用如下代码:


if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)

if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)

if 1 equ 2 (echo 1等于2) else (echo 1不等于2)

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 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。



打赏

本文链接:https://www.kinber.cn/post/2658.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客