【WINDOWS / DOS 批处理】if命令实现逻辑运算符

发布于:2022-10-29 ⋅ 阅读:(816) ⋅ 点赞:(0)

   if命令参数详解

【IF命令格式】IF  [ opt ]   condition  cmdA    else    cmdB

  • condition 不支持逻辑运算符 AND、OR
  • 在 cmdA 和 cmdB 中都支持支持IF命令嵌套,示例如下:
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set /p "color=请输入一种颜色:"
if  %color%  == yellow ( 
echo yellow ) else  (
	if  %color%  == blue ( echo blue) 	else (
	echo 颜色不符合要求
	 )
)

        运行 

 【标注一】   下载Notepad++      

C:\>demo
请输入一种颜色:yellow
yellow

C:\>demo
请输入一种颜色:blue
blue

C:\>demo
请输入一种颜色:other
颜色不符合要求

C:\>

在一种编程语言中,支持“条件与” 、“条件或”是必要的,在其它语言(例如:C语言)中,在条件中使用逻辑运算符即可实现该功能。但是在WINDOWS / DOS 脚本编程中,IF命令的condition 不支持逻辑运算符,所以只好“变相的”来实现。

【解决之道】

一、在 cmdA 中嵌套IF命令来实现“条件与”,IF命令格式如下:

IF  [opt]   conditionA  (
        IF  [opt]   conditionB  (
           IF  [opt]   conditionC  (
             ...
        )
   )
)

        示例

需求:只有三年级二班的同学才可以看电影,其它的同学都不可以

实现如下:

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set /p "grade=请输入年级:"
set /p "class=请输入班级:"
if  %grade%  == 3 ( 
	if  %class%  == 2 ( echo see  film ) 	
	) else (
	echo not see film
	) 

        运行 

C:\>demo
请输入年级:3
请输入班级:2
see  film

C:\>demo
请输入年级:4
请输入班级:2
not see film

C:\>demo
请输入年级:1
请输入班级:3
not see film

C:\>

二、在 cmdB 中嵌套IF命令来实现“条件或”,IF命令格式如下: 

IF  [opt]   conditionA  cmdX  else (
        IF  [opt]   conditionB  cmdY  else (
           IF  [opt]   conditionC  cmdZ  else (
             ...
        )
   )
)

        示例

需求:三年级或者四年级的同学才可以看电影,其它的同学都不可以

实现如下:

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set /p "grade=请输入年级:"
if  %grade%  == 3 ( 
	echo see  film 
	) else (
	if  %grade%  == 4 ( echo see  film  	
		) else (
	echo not see film
		) 
	)

        运行 

C:\>demo
请输入年级:3
see  film

C:\>demo
请输入年级:4
see  film

C:\>demo
请输入年级:2
not see film

C:\>

 【应用实例】

IF命令同时实现“条件或”和“条件与”,示例如下: 

需求:三年级二班或者四年级一班的同学才可以看电影,其它的同学都不可以

实现如下:

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set /p "grade=请输入年级:"
set /p "class=请输入班级:"
if  %grade%  == 3 ( 
	if %class%  == 2 ( 
		echo see  film 
		) else (
		echo not see film 
		) 
	) else (
	if  %grade%  == 4 ( 
		if %class%  == 1 ( 
		echo see  film 
			) else (
			echo not see film 
			)  	
		) else (
			echo not see film 
		)
	)

        运行

C:\>demo
请输入年级:3
请输入班级:2
see  film

C:\>demo
请输入年级:3
请输入班级:1
not see film

C:\>demo
请输入年级:4
请输入班级:1
see  film

C:\>demo
请输入年级:4
请输入班级:3
not see film

C:\>demo
请输入年级:5
请输入班级:1
not see film

C:\>

写作不易,如果本文对您有用,请 “在下面一圈三连”。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到