标题: [其他] 批处理如何限定只能输入指定的内容(输入非法/非指定内容则提示输入无效/返回重新输入) [打印本页]
作者: zhaofeng0420 时间: 2017-6-27 21:38 标题: 批处理如何限定只能输入指定的内容(输入非法/非指定内容则提示输入无效/返回重新输入)
本帖最后由 pcl_test 于 2017-6-28 00:15 编辑
set /p c=请选择:
如果请选择后面输入 空格 或指定的特殊符号,则提示输入无效
作者: hlzj88 时间: 2017-6-27 23:46
- :zt1
- echo.
- SET Choice=
- echo #三个选择
- SET /P Choice=------》
- echo.
- IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
- IF /I '%Choice%'=='1' GOTO a
- IF /I '%Choice%'=='2' GOTO b
- IF /I '%Choice%'=='3' GOTO c
- echo 输入有误,请重新输入
- goto zt1
复制代码
作者: zhaofeng0420 时间: 2017-6-28 12:48
回复 2# hlzj88
&输入这个符号会闪退
作者: hlzj88 时间: 2017-6-28 20:02
特殊字符的闪退是不可避免的,也许高手有办法。
既然闪退,就几乎相当你的输入错误,虽然没提示,但也不可执行。
作者: 老刘1号 时间: 2017-6-28 20:15
回复 4# hlzj88
尽量来标准写法,可以避免诸如特殊字符识别错误此类的问题- :zt1
- echo.
- SET Choice=
- echo #三个选择
- SET /P Choice=------》
- echo.
- IF "%Choice:~,1%" EQU "1" GOTO a
- IF "%Choice:~,1%" EQU "2" GOTO b
- IF "%Choice:~,1%" EQU "3" GOTO c
- echo 输入有误,请重新输入
- 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
修复了双引号问题- :zt1
- echo.
- SET Choice=
- echo #三个选择
- SET /P Choice=------》
- echo.
- set "Choice=%Choice:~,1%"
- IF "%Choice:"=""%" EQU "1" GOTO a
- IF "%Choice:"=""%" EQU "2" GOTO b
- IF "%Choice:"=""%" EQU "3" GOTO c
- echo 输入有误,请重新输入
- goto zt1
复制代码
不就只输一位嘛
改进版(xcopy获取单个输入来自:http://www.bathome.net/thread-41643-1-1.html)- :zt1
- echo.
- SET Choice=
- echo #三个选择
- for /f "delims=" %%a in ('xcopy /w . . 2^>nul') do if not defined Choice set "Choice=%%a"
- echo.
- set "Choice=%Choice:~-1%"
- IF "%Choice:"=""%" EQU "1" GOTO a
- IF "%Choice:"=""%" EQU "2" GOTO b
- IF "%Choice:"=""%" EQU "3" GOTO c
- echo 输入有误,请重新输入
- goto zt1
复制代码
输入123才能退出
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |