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

[其他] 批处理多选菜单判断分组问题

[复制链接]
发表于 2017-9-15 19:44:04 | 显示全部楼层 |阅读模式
  1. @ECHO OFF
  2. ECHO A. 广东 B. 广西 C. 福建 D. 海南 E. 江苏 F. 浙江 G. 台湾
  3. ECHO H. 上海 I. 河南 J. 湖北 K. 安徽 L. 江西 M. 湖南
  4. ECHO N. 西藏 O. 甘肃 P. 青海
  5. ECHO.
  6. SET /P START=请选择:
复制代码
A,B,C,D,E,F,G 为第一组;H,I,J,K,L,M 为第二组;N,O,P 为第三组。(每一组数量不定,可增加或减少)
要求:输入的字符存在于第一组,则输出 第一组; 输入的字符存在于第二组,则输出 第二组;输入的字符存在于第一组和第二组,则输出 第二组;以此类推。
如:
请选择:A,D,F            则 ECHO 第一组
请选择:J,M                则 ECHO 第二组
请选择:D,F,H             则 ECHO 第二组
请选择:B,G,K,N,P       则 ECHO 第三组

用什么方法判断呢?
发表于 2017-9-16 19:48:03 | 显示全部楼层
也就是输出 你输入的最后一个字母 所在的组数
发表于 2017-9-16 20:39:10 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set .1=ABCDEFG
  4. set .2=HIJKLM
  5. set .3=NOP
  6. echo;A. 广东 B. 广西 C. 福建 D. 海南 E. 江苏 F. 浙江 G. 台湾
  7. echo;H. 上海 I. 河南 J. 湖北 K. 安徽 L. 江西 M. 湖南
  8. echo;N. 西藏 O. 甘肃 P. 青海
  9. echo;&set /p start=请选择:
  10. for /l %%a in (1 1 26) do (
  11.   set "zifu=!start:~-%%a,1!"
  12.   for %%b in (3 2 1) do set.%%b|find/i "!zifu!">nul 2>nul&&(echo;第%%b组&goto end)
  13. )
  14. :end
  15. pause>nul&exit /b
复制代码
偷懒钻空子,考虑到一般输入选择字母都是按字母表顺序输入,所以倒过来从最后一个字母开始依次从第三组到第一组筛选判断。所以是不严谨的代码
发表于 2017-9-17 12:24:17 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set _p1=A. 广东 B. 广西 C. 福建 D. 海南 E. 江苏 F. 浙江 G. 台湾
  4. set _p2=H. 上海 I. 河南 J. 湖北 K. 安徽 L. 江西 M. 湖南
  5. set _p3=N. 西藏 O. 甘肃 P. 青海
  6. echo.%_p1%&echo.%_p2%&echo.%_p3%&echo.
  7. set /p prov=请选择:
  8. set /a i=1
  9. for /f %%a in ('set _p') do (
  10.     call :prov_group "%prov%"
  11.     if !pg_ret! NEQ -1 goto :found
  12. )

  13. :notfound
  14. echo 输入错误,请重新选择.
  15. pause>nul&exit /b

  16. :found
  17. echo 第%pg_ret%组
  18. pause>nul&exit /b


  19. :prov_group
  20. set pg_ret=-1
  21. set pg_p=%~1
  22. set tmp=!_p%i%:%pg_p%.=!
  23. if  not "x%tmp%"=="x!_p%i%!" set pg_ret=%i%&&goto :EOF
  24. set /a i+=1
  25. goto :EOF
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 22:36 , Processed in 0.018932 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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