Board logo

标题: [其他] [已解决] choice 命令输出 %ERRORLEVEL% 结果始终为 1 是何解? [打印本页]

作者: 极品小猫    时间: 2021-9-1 13:52     标题: [已解决] choice 命令输出 %ERRORLEVEL% 结果始终为 1 是何解?

本帖最后由 极品小猫 于 2021-9-6 15:34 编辑
  1. @echo off
  2. echo %errorlevel%
  3. choice.exe /C ab /M "选择处理的字符:"
  4. echo %errorlevel%
  5. if %errorlevel%==2 echo N
  6. if %errorlevel%==1 echo Y
  7. pause
复制代码
实例代码如上,不管怎么操作,%errorlevel% 最终输出的结果都是 1


作者: cmd1152    时间: 2021-9-1 19:56

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. echo %errorlevel%
  4. choice /C ab /M "选择处理的字符:"
  5. echo %errorlevel%
  6. if %errorlevel%==2 echo b
  7. if %errorlevel%==1 echo a
  8. pause
复制代码

作者: 极品小猫    时间: 2021-9-2 08:33

回复  极品小猫
没有变量延时,前面要有 SetLocal EnableDelayedExpansion
还要把 %ERRORLEVEL% 改成 !E ...
aries215 发表于 2021-9-1 19:12



   当前的案例不需要用到变量延时吧?
作者: 极品小猫    时间: 2021-9-2 08:40

可以变,没问题呀
idwma 发表于 2021-9-1 18:28



    理论上这命令是没问题的,但是实际的输出结果却很诡异……
所以才上来求助看会是什么原因影响
作者: Batcher    时间: 2021-9-2 09:15

回复 1# 极品小猫


    什么操作系统?我的Win10、Win7无法重现这个问题。
作者: 极品小猫    时间: 2021-9-2 10:11

回复 7# Batcher

WIN7 64,我查看过系统环境变量,没发现什么毛病,就是不知道为什么会出现这种诡异的问题
    不想为了这个问题重装系统

现在用这个黑科技方法解决需求:http://www.bathome.net/viewthread.php?tid=41643

不过还是想碰碰运气看看有没有大佬知道我这个是什么原因
作者: cmd1152    时间: 2021-9-4 11:27

因为%errorlevel%在开始就是1了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2