批处理之if语句

if语句

判断俩个字符串是否相等

if "string1" == "string2" command 语句 例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
:: /p 选项会要求用户从终端输入数据
set /p var1=请输入字符串1:
set /p var2=请输入字符串2:
if %var1% == %var2% (
echo 输入的字符串相等
) else echo 输入的字符串不相等

set var3="hello"
set var4="hello"
if %var4% == %var3% (
echo 输入的字符串相等
) else echo 输入的字符串不相等

if "a" == "A" (
echo 输入的俩个字符相同
) else echo 输入的俩个字符不同

:: 加/i可以不区分大小写
if /i "a" == "A" (
echo 输入的俩个字符相同
) else echo 输入的俩个字符不同

pause

判断俩个数值是否相等

if 数值1 equ 数值2 command 语句

其他关系符号:

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

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
set /p num1=请输入数字:
if %num1% geq 10 (
echo 此数大于10
) else (
echo 此数小于10
)

:: 字符串比较而不是数字
if "12" lss "4" (
echo 12竟然会小于4!
) else (
echo 12当然不会小于4
)

if 12 lss 4 (
echo 12竟然会小于4!
) else (
echo 12当然不会小于4
)

判断驱动器是否存在

if [not] exist filename command

例子:

1
2
3
4
5
6
7
8
9
10
11
if exist "e:" (echo e盘存在) else echo e盘不存在

if exist d:\123.bat (echo 123.bat文件存在) else echo 123.bat文件不存在

dir /a-d d:\123.bat >nul 2>nul
if %errorlevel%==0 (echo 123.bat文件存在!) else echo 123.bat文件不存在

:: 判断文件夹是否存在
if exist test\ (echo test是文件夹) else echo test是文件
if exist test\. (echo test是文件夹) else echo test是文件
if exist test\nul (echo test是文件夹) else echo test是文件

判断变量是否定义

if defined 变量 command 语句 例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if defined a (echo 变量a已定义) else echo 变量a没被定义

echo a=
set a=
if defined a (echo 变量a已定义) else echo 变量a没被定义

echo a=10
set a=10
if defined a (echo 变量a已定义) else echo 变量a没被定义
:: 判断的时候不能写为%var%
set var5=5
if defined var5 (echo 变量var5已定义) else (echo 变量var5没有被定义)
set /p var6=请输入一个数字:
if defined %var6% (echo 变量var6已定义) else (echo 变量var6没有被定义)

set var7=5
if defined var7 (echo 变量var7已定义) else (echo 变量var7没有被定义)
set /p var8=请输入一个数字:
if defined var8 (echo 变量var8已定义) else (echo 变量var8没有被定义)

判断命令返回值

if errorlevel语句特点:

  • if errorlevel 0 cmmand, 含义是:如果返回的错误码值大于或等于0的时,将执行cmmand操作
  • if %errorlevel%==0 cmmand,含义是:如果返回的错误码值等于0的时候,将执行cmmand操作

例子:

1
2
3
4
5
6
7
net user
if %errorlevel% ==0 (echo neu user执行成功) else (echo net user命令执行失败)

set /p input=请输入任意一条命令:
if errorlevel 0 (echo %input% 命令执行成功) else (echo %input% 命令执行失败)

:: 一般0表示成功,其他失败, 错误码范围0-255

if not语句

  • 否的意思, 失败的时候先执行
  • if not “字符串1”==”字符串2” command 语句;
  • if not数值1 equ 数值2 command 语句;
  • if not exist filename command 语句;
  • if not defined 变量 command 语句;
  • if not errorlevel 数值 command 语句。