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


       if命令参数详解

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

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

            运行 

     【标注一】   下载Notepad++      

    1. C:\>demo
    2. 请输入一种颜色:yellow
    3. yellow
    4. C:\>demo
    5. 请输入一种颜色:blue
    6. blue
    7. C:\>demo
    8. 请输入一种颜色:other
    9. 颜色不符合要求
    10. C:\>

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

    【解决之道】

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

    1. IF  [opt]   conditionA  (
    2.         IF  [opt]   conditionB  (
    3.         IF  [opt]   conditionC  (
    4. ...
    5. )
    6.   )

            示例

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

    实现如下:

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

            运行 

    1. C:\>demo
    2. 请输入年级:3
    3. 请输入班级:2
    4. see film
    5. C:\>demo
    6. 请输入年级:4
    7. 请输入班级:2
    8. not see film
    9. C:\>demo
    10. 请输入年级:1
    11. 请输入班级:3
    12. not see film
    13. C:\>

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

    1. IF  [opt]   conditionA  cmdX else
    2.         IF  [opt]   conditionB  cmdY else
    3.         IF  [opt]   conditionC  cmdZ else
    4. ...
    5. )
    6.   )

            示例

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

    实现如下:

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

            运行 

    1. C:\>demo
    2. 请输入年级:3
    3. see film
    4. C:\>demo
    5. 请输入年级:4
    6. see film
    7. C:\>demo
    8. 请输入年级:2
    9. not see film
    10. C:\>

     【应用实例】

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

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

    实现如下:

    1. :: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
    2. ::demo.bat
    3. @echo off
    4. setlocal enableDelayedExpansion
    5. set /p "grade=请输入年级:"
    6. set /p "class=请输入班级:"
    7. if %grade% == 3 (
    8. if %class% == 2 (
    9. echo see film
    10. ) else (
    11. echo not see film
    12. )
    13. ) else (
    14. if %grade% == 4 (
    15. if %class% == 1 (
    16. echo see film
    17. ) else (
    18. echo not see film
    19. )
    20. ) else (
    21. echo not see film
    22. )
    23. )

            运行

    1. C:\>demo
    2. 请输入年级:3
    3. 请输入班级:2
    4. see film
    5. C:\>demo
    6. 请输入年级:3
    7. 请输入班级:1
    8. not see film
    9. C:\>demo
    10. 请输入年级:4
    11. 请输入班级:1
    12. see film
    13. C:\>demo
    14. 请输入年级:4
    15. 请输入班级:3
    16. not see film
    17. C:\>demo
    18. 请输入年级:5
    19. 请输入班级:1
    20. not see film
    21. C:\>

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

  • 相关阅读:
    21.4 Python 使用GeoIP2地图定位
    spring cloud rebuild project z
    详解混合类型文件(Polyglot文件)的应用生成与检测
    【Python】输入输出与运算符
    孩子升年级难适应?猿辅导语文金牌教研来支招
    嵌入式开发:当用微控制器构建嵌入式GUI时,有哪些注意事项
    kafka系列七、kafka核心配置(转)
    动态规划(背包常见问题)
    Apache Flink 中作业图与执行图的深入解析
    关于Vue使用props传值遇到的一些问题
  • 原文地址:https://blog.csdn.net/mt15306338066/article/details/127564594