You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows命令行choice命令未设置ERRORLEVEL问题求助

解决批处理Choice命令ERRORLEVEL为空的问题

你的代码核心问题在于Choice命令的/c参数格式错误,同时可以优化判断逻辑提升可靠性:

1. 修正Choice命令的参数格式

原代码中/c123的写法是错误的,/c参数需要与后续的选项字符之间保留空格,否则命令无法正确解析选项集合,导致ERRORLEVEL无法被设置。修正后的命令应为:

choice /c 123 /n "Select an option:"

2. 更可靠的ERRORLEVEL判断方式

直接使用if errorlevel N语法比读取%ERRORLEVEL%变量更可靠,它会检查ERRORLEVEL的值是否大于等于N,只需按从高到低的顺序判断即可:

@echo off
cls
choice /c 123 /n "Select an option:"

echo Selected option: %ERRORLEVEL%

if errorlevel 3 (
    echo "launching Lode Runner"
    rem mount a: W:\GAMES\RETRO\DOS\abandonware\LODERUN
    rem a:
    rem jouer.bat
    goto end
)
if errorlevel 2 (
    echo "launching Ante Up"
    rem mount a: W:\GAMES\Poker\Ante-Upa
    rem a:
    rem FNPC.EXE
    goto end
)
if errorlevel 1 (
    echo "launching casino games"
    rem mount a: W:\GAMES\Poker\CasinoGames
    rem a:
    rem runme.bat
    goto end
)

:end

3. 处理环境变量提前展开的问题

如果仍遇到ERRORLEVEL为空的情况,可能是批处理的环境变量提前展开导致的,此时可以启用延迟环境变量扩展,用!ERRORLEVEL!代替%ERRORLEVEL%:

@echo off
setlocal enabledelayedexpansion
cls
choice /c 123 /n "Select an option:"

echo Selected option: !ERRORLEVEL!

if !ERRORLEVEL!==1 (
    echo "launching casino games"
    rem mount a: W:\GAMES\Poker\CasinoGames
    rem a:
    rem runme.bat
    goto end
)
:: 其余判断同理替换为!ERRORLEVEL!

内容的提问来源于stack exchange,提问作者phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:24:56