首页 > 解决方案 > 批处理(选择):ERRORLEVEL 似乎不起作用

问题描述

我已经编写了一个批处理文件,几个小时以来,我一直在尝试解决选择命令会导致程序崩溃的问题。崩溃似乎发生在第一个“if ERRORLEVEL”命令期间。

    choice /c EDCBA /n
if "%ERRORLEVEL%"=="5" (
    cls
    echo From which file should the first line be extracted?
    set /p ffe="> "
    echo set /p %gclvar%="<%ffe%">>codes/%current%.bati
    goto createblock
)
if "%ERRORLEVEL%"=="4" (
    echo set /p %gclvar%="> ">>codes/%current%.bati
    goto createblock
)
if "%ERRORLEVEL%"=="3" (
    cls
    echo Type in the operation.
    set /p op="> "
    echo set /a %gclvar%=%op%>>codes/%current%.bati
    goto createblock
)
if "%ERRORLEVEL%"=="2" (
    cls
    echo Type in the variable. (without "%")
    set /p var="> "
    echo set %gclvar%=%%var%%>>codes/%current%.bati
    goto createblock
)
if "%ERRORLEVEL%"=="1" goto createblock

变量 %gclarvar% 由用户设置(不使用空格)。变量 %current% 是用“%random%(block)”创建的。(:createblock 存在)

标签: batch-filecmderrorlevel

解决方案


您将 ERRORLEVEL 视为字符串;这是一个数字。

而不是进行IF "%ERRORLEVEL%" == "5" ...字符串比较的 etc.,使用

IF ERRORLEVEL 5 ...它使用一种自多年前就已经存在的机制来测试 ERRORLEVEL,而我不愿承认知道,

或者

IF %ERRORLEVEL% EQU 5 ...哪些测试

SS64 onCHOICESS64 onIF


推荐阅读