批处理中的与或非实现

文本将介绍怎样在批处理脚本中实现与或非逻辑运算。

非(not)

在与或非中,则是唯一一个原生支持的语法。关键字为 not。实例:根据用户输入的年龄判断是否成年。

@echo off
set /p age=你的年龄:
if not %age% gtr 18 (
    echo 小屁孩
    goto end
)
echo 你成年了
:end
pause

与(and)

在批处理中并没有提供 “与” 操作符,需要自己通过多个 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

或(or)

或实现起来比非和或都要复杂一些。实例:根据用户输入的年龄判断,年龄小于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括号后面的“^”符号

点击查看更多批处理知识……

真理惟一可靠的标准就是永远自相符合。 —— 欧文
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号