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

回复 1# zzz19760225

一楼代码中第四行 :%a% ^ 被系统视为非法标签名而报错,导致 goto 失效而续行下一行代码;批处代码中的 goto 是无条件转移,因此就逻辑而言,其后再接续其他命令并无意义...
以下是订正代码,可用直接回车键退出循环,但未予输入值合法性检查...
  1. @echo off
  2. :0
  3. set "a=" &set /p "a=1/2/3:"
  4. if not defined a exit/b
  5. goto:%a%
  6. :1
  7. echo:123
  8. goto:0
  9. :3
  10. echo:789
  11. goto:0
  12. :2
  13. echo:456
  14. goto:0
复制代码
1

评分人数

TOP

本帖最后由 aloha20200628 于 2025-2-12 10:36 编辑

回复 1# zzz19760225

再给一个调用 choice 功能的版本,内置自动检查输入值合法性,输入值不必跟回车键...
  1. @echo off
  2. :0
  3. choice /c 123q /m "q=退出"
  4. goto:%errorlevel%
  5. :4
  6. exit/b
  7. :1
  8. echo,123
  9. goto:0
  10. :2
  11. echo,456
  12. goto:0
  13. :3
  14. echo:789
  15. goto:0
复制代码

TOP

本帖最后由 aloha20200628 于 2025-2-12 10:30 编辑

回复 5# zzz19760225

2楼代码已明确没有输入值合法性检查,楼主却用不存在的标签名 5 去尝试,当然会入坑了...
楼主用4楼代码时可见 cmd 命令行竟把 choice 吃掉一个首字符,结果就自爆了...
以下代码用来订正2楼代码,加入输入值合法性检查...
  1. @echo off
  2. :0
  3. set "a=" &set /p "a=1/2/3:"
  4. if not defined a exit/b
  5. if "%a%" geq "1" if "%a%" leq "3" (set "ok=1") else goto:0
  6. goto:%a%
  7. :1
  8. echo:123
  9. goto:0
  10. :3
  11. echo:789
  12. goto:0
  13. :2
  14. echo:456
  15. goto:0
复制代码
1

评分人数

TOP

返回列表