BAT 条件判断 IF

本文详细介绍了Windows批处理脚本(BAT)中如何使用IF、ELSEIF和ELSE进行条件判断,包括三种不同的写法及其特点。内容涵盖了简单的单行判断、可读性较好的分行写法以及增强版的分行写法,并提供了多个示例来展示如何判断文件存在、字符串相等、数值比较等常见场景。此外,还提到了IF语句的完整格式和比较运算符的使用。
摘要由CSDN通过智能技术生成

参考文章: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用于条件判断,适用于以下情形:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风情客家__

原创不易,觉得好的话给个打赏哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值