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

[已解决]批处理如何过滤除了123的其它任何数字的问题?

[复制链接]
发表于 2012-8-6 12:48:48 | 显示全部楼层 |阅读模式
求助,

有三个选择项  1  2   3  判断输入的是否为 1   OR 2  OR 3

已过滤特殊符号和字母,判断数字这个不知道怎么写了.请高手帮忙,谢谢 !

补充:我想表达的是, 除了输入1   OR  2  OR 3 程序正常选择,其它的全部过滤.包括,4-9,0.等其它任意数字

评分

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

查看全部评分

发表于 2012-8-6 13:04:05 | 显示全部楼层

  1. @Echo Off
  2. :Start
  3. Echo (1)吃饭
  4. Echo (2)睡觉
  5. Echo (3)喝水
  6. Set  /P Select=请选择:
  7. If "%Select%" == "1"  Echo 选择的是1
  8. If "%Select%" == "2"  Echo 选择的是2
  9. If "%Select%" == "3"  Echo 选择的是3 Else   Echo 选择错误,请重新选择。&Goto Start
  10. Pause>Nul
复制代码
 楼主| 发表于 2012-8-6 13:17:54 | 显示全部楼层
If "%Select%" == "1"
请教 以上变量加引号,和 1 加引号是什么意思,谢谢 !
 楼主| 发表于 2012-8-6 13:25:52 | 显示全部楼层
公子提供的方法不行,输入 1  2  3  以外的数字直接到pause了
发表于 2012-8-6 13:46:36 | 显示全部楼层
回复 1# disk0


    这个用 choice 实现不行么

choice /c 123
发表于 2012-8-6 13:58:49 | 显示全部楼层
  1. @echo off
  2. :st
  3. cls&set/p input=input:
  4. for %%a in (1 2 3) do if "%input%"=="%%a" goto :%%a
  5. goto :st
  6. :1
  7. echo This is 1&pause&goto :eof
  8. :2
  9. echo This is 2&pause&goto :eof
  10. :3
  11. echo This is 3&pause&goto :eof
复制代码
发表于 2012-8-6 14:01:14 | 显示全部楼层
回复 2# 冷玉公子


    如果要使用 else,条件为真的部分要加括号:if 条件 (真) else 假
 楼主| 发表于 2012-8-6 14:36:13 | 显示全部楼层
apang 发表于 2012-8-6 13:58



    大哥,我想请教下,如果我仅检测输入的 是不是 1 OR 2 OR 3 ,如果不是返回重新输入,如果是继续程序,这个FOR要怎么写,谢谢 !
 楼主| 发表于 2012-8-6 14:37:31 | 显示全部楼层
apang 发表于 2012-8-6 13:58



    双==号两边的变量 加引号是什么意思,请指点,谢谢 !
 楼主| 发表于 2012-8-6 15:19:12 | 显示全部楼层
用笨方法搞定了,多谢各位.
发表于 2012-8-6 16:43:29 | 显示全部楼层
本帖最后由 apang 于 2012-8-6 16:49 编辑
大哥,我想请教下,如果我仅检测输入的 是不是 1 OR 2 OR 3 ,如果不是返回重新输入,如果是继续程序 ...
disk0 发表于 2012-8-6 14:36


是这个意思吗?
  1. @echo off
  2. :st
  3. cls&set/p input=输入(1,2或3):
  4. for %%a in (1 2 3) do (
  5.   if "%input%"=="%%a" echo 继续...&pause&goto :eof
  6. )
  7. goto :st
复制代码
加引号是防止input变量为空(直接回车)时出现语法错误,也表示字符串比较。

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-8-6 16:52:53 | 显示全部楼层
神啊,送钱一定要送到裤兜里啊。

  1. @Echo Off
  2. :Start
  3. Echo (1)吃饭
  4. Echo (2)睡觉
  5. Echo (3)喝水
  6. Set  /P Select=请选择:
  7. If "%Select%" == "1" Echo 选择的是1
  8. If "%Select%" == "2" Echo 选择的是2
  9. If "%Select%" == "3" (Echo 选择的是3)else (Echo 选择错误,请重新选择。&Cls&Goto Start)
  10. Pause>Nul
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-8-6 19:53:19 | 显示全部楼层
  1. @echo off
  2. title=spring_clover
  3. color 0a
  4. :maeu
  5. echo only one two three
  6. set/p a=please input your choose:
  7. if %a%==1 goto :1
  8. if %a%==2 goto :2
  9. if %a%==3 goto :3
  10. goto :maeu
  11. :1
  12. echo this is one
  13. pause
  14. goto :maeu
  15. :2
  16. echo this is two
  17. pause
  18. goto :maeu
  19. :3
  20. echo this is three
  21. pause
  22. goto :maeu
复制代码
这段代码有欠考虑,你自己再加点东西上去就可以了。
发表于 2012-8-7 21:45:02 | 显示全部楼层
用嵌套的if else语句就行了:
  1. @Echo Off
  2. :Start
  3. Echo (1)吃饭
  4. Echo (2)睡觉
  5. Echo (3)喝水
  6. Set  /P Select=请选择
  7. if %select%==1 (
  8. echo 1~吃饭
  9. ) else (
  10. if %select%==2 (
  11. echo 2~睡觉
  12. ) else (
  13. if %select%==3 (
  14. echo 3~喝水
  15. ) else echo 你的数不对
  16. )
  17. )
  18. echo 按任意键重来 &pause>nul &goto start
复制代码
发表于 2012-8-7 21:45:34 | 显示全部楼层
本帖最后由 悬崖之树 于 2012-8-7 21:51 编辑

前面的代码太乱了,看下面的:
  1. @Echo Off
  2. :Start
  3. Echo (1)吃饭
  4. Echo (2)睡觉
  5. Echo (3)喝水
  6. Set  /P Select=请选择
  7. if %select%==1 (echo 1~吃饭) else (if %select%==2 (echo 2~睡觉) else (if %select%==3 (echo 3~喝水) else (echo 你的数不对)))
  8. echo 按任意键重来 &pause>nul &goto start
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 14:11 , Processed in 0.032561 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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