Batch脚本choice命令选中单选项却连续执行多个分支问题求助
问题原因
- 核心原因是Batch脚本的顺序执行特性:你跳转到
:ONE分支执行完所有代码后,没有设置跳转或退出逻辑,脚本会自动按行继续执行后续的:TWO分支代码,不会自动停止。 - 次要问题:你当前的ERRORLEVEL判断语法不规范,也可能引发判断逻辑异常。Batch中
IF ERRORLEVEL N的默认规则是「ERRORLEVEL值大于等于N时条件成立」,所以如果要按从小到大的顺序判断,需要用变量取值比较%ERRORLEVEL%,如果用默认语法则需要从大到小倒序写判断条件。
修复方案
- 每个选项分支执行完毕后添加
GOTO EXIT跳出,脚本末尾新增:EXIT标签终止流程,或者直接添加exit /b退出脚本即可。 - 修正ERRORLEVEL判断语法。
修正后的代码示例
@echo off echo 电源计划锁定工具 echo 作者 hummingrofl560 echo 请选择你要执行的操作: echo ================================== echo 1. 无电源计划锁定 - 更改计划前请选择此项,同时允许自定义计划参数 echo 2. 节能模式 - 尽可能降低电脑性能以减少能耗 echo 3. 平衡/自动(默认) - 支持的硬件上自动平衡性能与能耗 echo 4. 高性能 - 优先保障性能,能耗更高 echo 5. 安静模式 - 降低性能以减少风扇噪音 choice /N /C:12345 /M "请输入选项编号:" IF %ERRORLEVEL% ==1 GOTO ONE IF %ERRORLEVEL% ==2 GOTO TWO IF %ERRORLEVEL% ==3 GOTO THREE IF %ERRORLEVEL% ==4 GOTO FOUR IF %ERRORLEVEL% ==5 GOTO FIVE :ONE echo 正在关闭电源计划锁定 c:\powerplans\Default_no_specified_power_plan.reg echo 电源计划锁定已关闭 echo 更改需要重启电脑后生效 pause GOTO EXIT :TWO echo 正在锁定为「平衡/自动」模式 c:\powerplans\Specify_Automatic_power_plan.reg echo 电源计划已锁定为「平衡/自动」 echo 更改需要重启电脑后生效 pause GOTO EXIT :THREE REM 此处补全第三个选项的对应逻辑 GOTO EXIT :FOUR REM 此处补全第四个选项的对应逻辑 GOTO EXIT :FIVE REM 此处补全第五个选项的对应逻辑 GOTO EXIT :EXIT
内容的提问来源于stack exchange,提问作者hummingrofl860
相关产品推荐
相关产品推荐

