[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

set /p c=请选择:

如果请选择后面输入 空格 或指定的特殊符号,则提示输入无效

  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
复制代码
目的,学习批处理

TOP

回复 2# hlzj88


    &输入这个符号会闪退

TOP

特殊字符的闪退是不可避免的,也许高手有办法。
既然闪退,就几乎相当你的输入错误,虽然没提示,但也不可执行。
目的,学习批处理

TOP

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

TOP

回复 5# 老刘1号

这样对用字母判断,更适合些,包括数字。
目的,学习批处理

TOP

回复 5# 老刘1号


    谢谢老司机,这上已经比较完美了,只有一个双引号 ” 不能禁止和控制输入一位数字,不过控制输入一位数字可以用其它的代码来写

TOP

本帖最后由 老刘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才能退出
2

评分人数

TOP

返回列表