[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 两次choice,第2次无法正常获取errorlevel的值?

不知道是否bug,我在同一个bat里面,

用到2次choice选择,

但第2次的errorlevel获取的值始终有问题。

Win10 Pro 1507。

例如:
  1. @echo off
  2. :Start
  3. echo.
  4. choice /c 1234569 /M 请输入数字:
  5. echo.
  6. if errorlevel 9 set Number1=9 & goto Next
  7. if errorlevel 8 set Number1=8 & goto Next
  8. if errorlevel 7 set Number1=7 & goto Next
  9. if errorlevel 6 set Number1=6 & goto Next
  10. if errorlevel 5 set Number1=5 & goto Next
  11. if errorlevel 4 set Number1=4 & goto Next
  12. if errorlevel 3 set Number1=3 & goto Next
  13. if errorlevel 2 set Number1=2 & goto Next
  14. if errorlevel 1 set Number1=1 & goto Next
  15. :Next
  16. choice /c 1234569 /M 请输入数字2:
  17. if errorlevel 9 set Number2=99 & goto Next2
  18. if errorlevel 8 set Number2=88 & goto Next2
  19. if errorlevel 7 set Number2=77 & goto Next2
  20. if errorlevel 6 set Number2=66 & goto Next2
  21. if errorlevel 5 set Number2=55 & goto Next2
  22. if errorlevel 4 set Number2=44 & goto Next2
  23. if errorlevel 3 set Number2=33 & goto Next2
  24. if errorlevel 2 set Number2=22 & goto Next2
  25. if errorlevel 1 set Number2=11 & goto Next2
  26. :Next2
  27. echo Number1是:%Number1%
  28. echo.
  29. echo Number2是:%Number2%
  30. echo =========================
  31. goto Start
复制代码
请看我截图的测试。第2次的choice输入9后,本来应该显示99的,但却显示77

虽然我choice的 /c 设置的是 1234569 ,但if errorlevel 必须从987654321这样倒序下来。如果使用9654321的话,会导致判断出错。我也不知道为什么。

但现在因为我需要的情况比较特殊, /c的值不能有7和8(举例。实际上有时只有1239这4个。)

TOP

choice按位置而不是字符
zaqmlp 发表于 2020-2-16 23:40



    原来如此,感谢解答!不知道 choice的选项,能否数字+字母组合?例如  /c 123456789AaBb  (假设要用到这些)。假设可以,不知道 顺序上要怎么列?字母是不是比数字要放在更前面?
(只是提出这样一个问题。我自己将会进行测试检验。)

TOP

red2020 发表于 2020-2-17 00:20



    感谢解答,一个很酷的思路,学习了。

TOP

返回列表