找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22858|回复: 4

[代码合集] 做一个可以多选的菜单,一直报错求大佬苟命

[复制链接]
发表于 2019-2-18 11:26:29 | 显示全部楼层 |阅读模式
错误 1.此时不应有 4。
2.系统找不到文件 1。

鄙人纯合子小白,求各位大佬指点!
  1. @echo off
  2. set /p str=enter the selected number:  
  3.   
  4. :STR_VISTOR  
  5.   
  6. echo str = %str%  
  7.   
  8. for /f "tokens=1,*" %%a in (%str%) do (  
  9.         set /a a=%%a
  10.         set str="%%b"
  11.         if %a% GTR 4 (
  12.                 echo nonscript
  13.                 ) else (
  14.                 echo script%a%
  15.                 goto script%a%
  16.         )       
  17. )


  18. :script1
  19. echo 1
  20. goto STR_VISTOR

  21. :script2
  22. echo 2
  23. goto STR_VISTOR

  24. : script3
  25. echo 3
  26. goto STR_VISTOR

  27. :script4
  28. echo 4
  29. goto STR_VISTOR

  30. :nonscript
  31. echo invalid number %%a
  32. goto STR_VISTOR
复制代码
发表于 2019-2-18 13:23:04 | 显示全部楼层
本帖最后由 happyxxdhaha 于 2019-2-18 13:24 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set str=
  3. set /p str=enter the selected number:

  4. :STR_VISTOR
  5. if not defined str goto:eof
  6. echo str = %str%

  7. for /f "tokens=1,*" %%a in ("%str%") do (  
  8.         set a=%%a
  9.         set str=%%b
  10.         if !a! GTR 4 (
  11.                 echo nonscript
  12.                 goto:nonscript
  13.                 ) else (
  14.                 echo script!a!
  15.                 goto:script!a!
  16.         )
  17. )


  18. :script1
  19. echo 1
  20. goto STR_VISTOR

  21. :script2
  22. echo 2
  23. goto STR_VISTOR

  24. :script3
  25. echo 3
  26. goto STR_VISTOR

  27. :script4
  28. echo 4
  29. goto STR_VISTOR

  30. :nonscript
  31. echo invalid number %a%
  32. goto STR_VISTOR
复制代码

评分

参与人数 1技术 +1 收起 理由
guojiaqihs + 1 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2019-2-18 13:59:07 | 显示全部楼层
回复 2# happyxxdhaha


    真是非常非常非常感谢大佬了,苟命之恩!
 楼主| 发表于 2019-2-19 09:24:21 | 显示全部楼层
回复 2# happyxxdhaha

不好意思,我想再请教一下。这个有什么简单的办法跳出循环吗?
    我只能想到每个 script下加一句if "%%b"=="" (echo break loop)
 楼主| 发表于 2019-2-19 10:30:52 | 显示全部楼层
天资愚钝,只能这样了。虽然ZZ但也算是能用了。
  1. @echo off&setlocal enabledelayedexpansion

  2. echo
  3. set str=
  4. set /p str=enter the selected number:
  5. set str=%str% 999
  6. :STR_VISTOR
  7. if not defined str goto:eof
  8.         for /f "tokens=1,*" %%a in ("%str%") do (  
  9.                 set a=%%a
  10.                 set str=%%b
  11.         if "%%b"=="" (goto:fin)
  12.                 if !a! GTR 4 (
  13.                         echo nonscript
  14.                         goto nonscript
  15.                         ) else (
  16.                         echo script!a!
  17.                         goto script!a!
  18.                 )
  19.         )



  20. :script1
  21. echo 1

  22. goto STR_VISTOR

  23. :script2
  24. echo 2

  25. goto STR_VISTOR

  26. :script3
  27. echo 3

  28. goto STR_VISTOR

  29. :script4
  30. echo 4

  31. goto STR_VISTOR

  32. :nonscript
  33. echo invalid number %a%

  34. goto STR_VISTOR

  35. :fin
  36. echo 233
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 23:30 , Processed in 0.021190 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表