Board logo

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

作者: disk0    时间: 2012-8-6 12:48     标题: [已解决]批处理如何过滤除了123的其它任何数字的问题?

求助,

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

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

补充:我想表达的是, 除了输入1   OR  2  OR 3 程序正常选择,其它的全部过滤.包括,4-9,0.等其它任意数字
作者: 冷玉公子    时间: 2012-8-6 13:04

  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
复制代码

作者: disk0    时间: 2012-8-6 13:17

If "%Select%" == "1"
请教 以上变量加引号,和 1 加引号是什么意思,谢谢 !
作者: disk0    时间: 2012-8-6 13:25

公子提供的方法不行,输入 1  2  3  以外的数字直接到pause了
作者: Pale_Cheung    时间: 2012-8-6 13:46

回复 1# disk0


    这个用 choice 实现不行么

choice /c 123
作者: apang    时间: 2012-8-6 13:58

  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
复制代码

作者: CrLf    时间: 2012-8-6 14:01

回复 2# 冷玉公子


    如果要使用 else,条件为真的部分要加括号:if 条件 (真) else 假
作者: disk0    时间: 2012-8-6 14:36

apang 发表于 2012-8-6 13:58



    大哥,我想请教下,如果我仅检测输入的 是不是 1 OR 2 OR 3 ,如果不是返回重新输入,如果是继续程序,这个FOR要怎么写,谢谢 !
作者: disk0    时间: 2012-8-6 14:37

apang 发表于 2012-8-6 13:58



    双==号两边的变量 加引号是什么意思,请指点,谢谢 !
作者: disk0    时间: 2012-8-6 15:19

用笨方法搞定了,多谢各位.
作者: apang    时间: 2012-8-6 16:43

本帖最后由 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变量为空(直接回车)时出现语法错误,也表示字符串比较。
作者: 冷玉公子    时间: 2012-8-6 16:52

神啊,送钱一定要送到裤兜里啊。
  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
复制代码

作者: 苦涩的回忆    时间: 2012-8-6 19:53

  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

用嵌套的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

本帖最后由 悬崖之树 于 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
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2