本帖最后由 Echo11 于 2022-2-22 19:50 编辑
一、以下“功能测试1”,正常执行和选择。- @echo off
- Title choice命令功能测试1
- :menu1
- echo.
- echo 1:起床
- echo.
- echo 2:睡觉
- echo.
- echo 3:退出
- echo.
- choice /C:123 /M "请选择:"
- if %errorlevel%==1 echo.你选择了 1&pause
- if %errorlevel%==2 echo.你选择了 2&pause
- if %errorlevel%==3 echo.你选择了 3&pause
- if %errorlevel%==0 echo.你Ctrl+Break 或 Ctrl+C了?好像到不了这? &pause
- echo debug: hmm...
- goto :menu1
- exit /B
复制代码 二、以下“功能测试2”,判断选择部分采用了网上的语法方式if errorlevel 1,中间没有“==”运算符,errorlevel 也没有加“%%”,一直不明白这是什么语法?
实际测试效果:比如选2,只要是<=2的选项都会执行。- @echo off
- Title choice命令功能测试2
- :menu1
- echo.
- echo 1:起床
- echo.
- echo 2:睡觉
- echo.
- echo 3:退出
- echo.
- choice /C:123 /M "请选择:"
- if errorlevel 1 echo.你选择了 1&pause
- if errorlevel 2 echo.你选择了 2&pause
- if errorlevel 3 echo.你选择了 3&pause
- if errorlevel 0 echo.你Ctrl+Break 或 Ctrl+C了?好像到不了这? &pause
- echo debug: hmm...
- goto :menu1
- exit /B
复制代码 三、以下“功能测试3”。
网上给出if errorlevel 1这种语法的人,基本都做了一个注释:就是顺序要从大到小如这里的测试代码3。
但是实际测试结果同2,不管如何调整顺序,比如选2,只要是<=2的选项都会执行。
(网上的方法能走通是因为他们都GOTO了或在选项那行EXIT了)- @echo off
- Title choice命令功能测试3
- :menu1
- echo.
- echo 1:起床
- echo.
- echo 2:睡觉
- echo.
- echo 3:退出
- echo.
- choice /C:123 /M "请选择:"
- if errorlevel 3 echo.你选择了 3&pause
- if errorlevel 2 echo.你选择了 2&pause
- if errorlevel 1 echo.你选择了 1&pause
- if errorlevel 0 echo.你Ctrl+Break 或 Ctrl+C了?好像到不了这? &pause
- echo debug: hmm...
- goto :menu1
- exit /B
复制代码 求大神详解一下1、网上if errorlevel 1这种用法到底什么意思?
2、如果if errorlevel 1是有效的,那为何会如果不跳转或退出,会依次执行小于等于选择值的选项?
3、如果if errorlevel 1是无效的(用原true),那为何选2的时候,选项3又不会执行? |