Board logo

标题: [其他] 批处理如何限定只能输入指定的内容(输入非法/非指定内容则提示输入无效/返回重新输入) [打印本页]

作者: zhaofeng0420    时间: 2017-6-27 21:38     标题: 批处理如何限定只能输入指定的内容(输入非法/非指定内容则提示输入无效/返回重新输入)

本帖最后由 pcl_test 于 2017-6-28 00:15 编辑

set /p c=请选择:

如果请选择后面输入 空格 或指定的特殊符号,则提示输入无效
作者: hlzj88    时间: 2017-6-27 23:46

  1. :zt1
  2. echo.
  3. SET Choice=
  4. echo      #三个选择
  5. SET /P Choice=------》
  6. echo.
  7. IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
  8. IF /I '%Choice%'=='1' GOTO a
  9. IF /I '%Choice%'=='2' GOTO b
  10. IF /I '%Choice%'=='3' GOTO c
  11. echo 输入有误,请重新输入
  12. goto zt1
复制代码

作者: zhaofeng0420    时间: 2017-6-28 12:48

回复 2# hlzj88


    &输入这个符号会闪退
作者: hlzj88    时间: 2017-6-28 20:02

特殊字符的闪退是不可避免的,也许高手有办法。
既然闪退,就几乎相当你的输入错误,虽然没提示,但也不可执行。
作者: 老刘1号    时间: 2017-6-28 20:15

回复 4# hlzj88
尽量来标准写法,可以避免诸如特殊字符识别错误此类的问题
  1. :zt1
  2. echo.
  3. SET Choice=
  4. echo      #三个选择
  5. SET /P Choice=------》
  6. echo.
  7. IF "%Choice:~,1%" EQU "1" GOTO a
  8. IF "%Choice:~,1%" EQU "2" GOTO b
  9. IF "%Choice:~,1%" EQU "3" GOTO c
  10. echo 输入有误,请重新输入
  11. goto zt1
复制代码

作者: hlzj88    时间: 2017-6-28 21:32

回复 5# 老刘1号

这样对用字母判断,更适合些,包括数字。
作者: zhaofeng0420    时间: 2017-6-28 22:59

回复 5# 老刘1号


    谢谢老司机,这上已经比较完美了,只有一个双引号 ” 不能禁止和控制输入一位数字,不过控制输入一位数字可以用其它的代码来写
作者: 老刘1号    时间: 2017-6-29 15:20

本帖最后由 老刘1号 于 2017-6-29 15:27 编辑

回复 7# zhaofeng0420


    修复了双引号问题
  1. :zt1
  2. echo.
  3. SET Choice=
  4. echo      #三个选择
  5. SET /P Choice=------》
  6. echo.
  7. set "Choice=%Choice:~,1%"
  8. IF "%Choice:"=""%" EQU "1" GOTO a
  9. IF "%Choice:"=""%" EQU "2" GOTO b
  10. IF "%Choice:"=""%" EQU "3" GOTO c
  11. echo 输入有误,请重新输入
  12. goto zt1
复制代码
不就只输一位嘛
改进版(xcopy获取单个输入来自:http://www.bathome.net/thread-41643-1-1.html
  1. :zt1
  2. echo.
  3. SET Choice=
  4. echo      #三个选择
  5. for /f "delims=" %%a in ('xcopy /w . . 2^>nul') do if not defined Choice set "Choice=%%a"
  6. echo.
  7. set "Choice=%Choice:~-1%"
  8. IF "%Choice:"=""%" EQU "1" GOTO a
  9. IF "%Choice:"=""%" EQU "2" GOTO b
  10. IF "%Choice:"=""%" EQU "3" GOTO c
  11. echo 输入有误,请重新输入
  12. goto zt1
复制代码
输入123才能退出




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