在与或非中,则是唯一一个原生支持的语法。关键字为 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括号后面的“^”符号