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

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

[复制链接]
发表于 2017-6-27 21:38:23 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-6-28 00:15 编辑

set /p c=请选择:

如果请选择后面输入 空格 或指定的特殊符号,则提示输入无效
发表于 2017-6-27 23:46:24 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2017-6-28 12:48:45 | 显示全部楼层
回复 2# hlzj88


    &输入这个符号会闪退
发表于 2017-6-28 20:02:21 | 显示全部楼层
特殊字符的闪退是不可避免的,也许高手有办法。
既然闪退,就几乎相当你的输入错误,虽然没提示,但也不可执行。
发表于 2017-6-28 20:15:00 | 显示全部楼层
回复 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
复制代码
发表于 2017-6-28 21:32:05 | 显示全部楼层
回复 5# 老刘1号

这样对用字母判断,更适合些,包括数字。
 楼主| 发表于 2017-6-28 22:59:55 | 显示全部楼层
回复 5# 老刘1号


    谢谢老司机,这上已经比较完美了,只有一个双引号 ” 不能禁止和控制输入一位数字,不过控制输入一位数字可以用其它的代码来写
发表于 2017-6-29 15:20:45 | 显示全部楼层
本帖最后由 老刘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技术 +2 收起 理由
窄口牛 + 1 不错
zhaofeng0420 + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:02 , Processed in 0.012653 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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