在与或非中,则是唯一一个原生支持的语法。关键字为 not。实例:根据用户输入的年龄判断是否成年。
@echo off
set /p age=你的年龄:
if not %age% gtr 18 (
echo 小屁孩
goto end
)
echo 你成年了
:end
pause在批处理中并没有提供 “与” 操作符,需要自己通过多个 if 语句去模拟。实例:根据用户输入的年龄判断用户是否在20~40岁之间。
(1)使用 if 嵌套实现
@echo off
set /p age=你的年龄:
if %age% geq 20 (
if %age% leq 40 (
echo 努力,加班哦...
goto end
)
)
echo 洗洗睡觉吧
:end
pause(2)借助 goto 语句实现
@echo off
set /p age=你的年龄:
if %age% lss 20 goto xiuxi
if %age% gtr 40 goto xiuxi
echo 努力,加班哦...
goto end
:xiuxi
echo 洗洗睡觉吧
:end
pause或实现起来比非和或都要复杂一些。实例:根据用户输入的年龄判断,年龄小于18或者大于60岁的可以领取福利
(1)直接使用 goto 语句去实现,只要一个条件满足,马上跳转到执行代码逻辑地方。如下:
@echo off
set /p age=你的年龄:
if %age% lss 18 goto weal
if %age% gtr 60 goto weal
goto end
:weal
echo 来哦!领取福利
:end
pause(2)代码冗余,判断的条件越多冗余的代码也就越多。如下:
@echo off
set /p age=你的年龄:
if %age% lss 18 (
echo 来哦!领取福利
)
if %age% gtr 60 (
echo 来哦!领取福利
)
pause(3)利用 if-else 来实现。如下:
@echo off
set /p age=你的年龄:
if %age% lss 18 (echo 来哦!领取福利) else (if %age% gtr 60 (echo 来哦!领取福利))
pause这个类似于java中的如下代码:
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
if(age < 18) {
System.out.println("来哦!领取福利");
} else {
if(age > 60) {
System.out.println("来哦!领取福利");
}
}如果你觉得将if-else写在一行很难看,可以这样写:
@echo off
set /p age=你的年龄:
if %age% lss 18 (
echo 来哦!领取福利
) else (
if %age% gtr 60 (
echo 来哦!领取福利
)
)
pause甚至还可以这样写:
@echo off
set /p age=你的年龄:
if %age% lss 18 (
echo 来哦!领取福利
) ^
else (
if %age% gtr 60 (
echo 来哦!领取福利
)
)
pause注意:if括号后面的“^”符号