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

[其他] [已解决] 批处理想在||前后执行分类,请问怎么做?

本帖最后由 zzz19760225 于 2025-2-12 08:53 编辑

WIN764
  1. @echo off
  2. :0
  3. set /p a=:
  4. goto:%a% ^|| goto:0
  5. :1
  6. echo:123
  7. goto:0
  8. :3
  9. echo:789
  10. goto:0
  11. :2
  12. echo:456
  13. goto:0
复制代码

实际并没有实现,前面出错,就执行后面的goto:0。

本帖最后由 zzz19760225 于 2025-2-16 16:17 编辑
回复  zzz19760225

一楼代码中第四行 :%a% ^ 被系统视为非法标签名而报错,导致 goto 失效而续行下一行 ...
aloha20200628 发表于 2025-2-11 20:55



谢谢回复
我用鼠标点击,运行闪了一下界面,跳出程序结束了。
然后用shift+鼠标右键点击=在此处打开命令行,
在命令行里执行如下
2楼


-
-
4楼

4楼在被吃掉的choice前面,加了一个空行让吃。(问题应该是复制代码到WIN7txt文本,会出现连成一线不分行的吃掉了)
  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

回复 3# hlzj88

你好,我换成了两行,然后是鼠标点击可以执行,输入123之外,跳出。
于是命令行执行如下


TOP

本帖最后由 zzz19760225 于 2025-2-14 11:46 编辑

回复 7# hlzj88

谢谢,这种形式可以完成了。
  1. @echo off
  2. :0
  3. set /p a=:
  4. if /i %a%==1 goto %a%
  5. if /i %a%==2 goto %a%
  6. if /i %a%==3 goto %a%
  7. goto 0
  8. :1
  9. echo:123
  10. goto:0
  11. :3
  12. echo:789
  13. goto:0
  14. :2
  15. echo:456
  16. goto:0
复制代码

完成的形式
  1. @echo off
  2. :0
  3. set /p a=:
  4. set b=1,2,3
  5. for %%i in (%b%) do (
  6. if /i %a%==%%i goto:%a%
  7. )
  8. echo:冇
  9. goto:0
  10. :1
  11. echo,123
  12. goto:0
  13. :2
  14. echo,456
  15. goto:0
  16. :3
  17. echo:789
  18. goto:0
复制代码

TOP

本帖最后由 zzz19760225 于 2025-2-12 18:55 编辑
回复  zzz19760225

2楼代码已明确没有输入值合法性检查,楼主却用不存在的标签名 5 去尝试,当然会入坑 ...
aloha20200628 发表于 2025-2-12 10:23


是啊,没有那个变量却想去执行不存在的标签,和想要goto直接跳转无法||组合类似,简单的||是不行,需要各种侧面迂回尝试。
执行choice可以显示有输入文字提示,感谢。
没有你们的无私参与,是不好自我解决问题的,再次感谢。



很有意思的功能,怎么在最小值与最大值之间,就可以实现功能了。
  1. @echo off
  2. :0
  3. set "a=" &set /p "a=1/2/3/4/5/6:"
  4. set b=1,2,3,4,5,6
  5. for %%i in (%b%) do (
  6. if not defined a exit/b
  7. if "%a%" geq "1" if "%a%" leq "6" (set "ok=1") else goto:0
  8. )
  9. goto:%a%
  10. :1
  11. echo:123
  12. goto:0
  13. :3
  14. echo:789
  15. goto:0
  16. :2
  17. echo:456
  18. goto:0
  19. :5
  20. echo:123000
  21. goto:0
  22. :4
  23. echo:789000
  24. goto:0
  25. :6
  26. echo:456000
  27. goto:0
复制代码

TOP

在之前的已有数字和未有数字之外,又尝试键盘上其余按键看会不会跳出,发现两者都具有稳定度。
  1. @echo off
  2. :0
  3. set /p a=:
  4. call :%a%
  5. goto:0
  6. :1
  7. echo:123
  8. goto:0
  9. :3
  10. echo:456
  11. goto:0
  12. :4
  13. echo:789
  14. exit /b
复制代码

TOP

返回列表