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

[出题]批处理限制输入只能为字母且个数在3-10之间

在别的论坛看到这个题目,大家没事练练手吧,看都有些什么方法实现。
要求:对用户的输入进行判断,字符数不能少于3个,大于10个,且必须是字母(不分大小写)
技术问题请到论坛发帖求助!

原帖由 canyuexiaolang 于 2009-8-14 19:48 发表
那要求只能输入数字你还不得……晕死

弱弱的问,数字的话直接比较就可以了把?

TOP

回复 7楼 的帖子

那要求只能输入数字你还不得……晕死

TOP

回复 51楼 的帖子

有什么不懂,可以在相应版块发帖求助。
(*^_^*)

TOP

难倒不是很难,不过有几个代码不知道什么意思。
共建和谐社会

TOP

回复 49楼 的帖子

不能识别大写字母。我把这句“if !one! gtr z echo 有中文字符&goto :rep”改成大写字母“Z”:“if !one! gtr Z echo 有中文字符&goto :rep”。测试了一下好像可以。不知道有没有错。

TOP

呵呵,原来区分字母如此简单!
  1. @echo off&setlocal enabledelayedexpansion
  2. :begin
  3. set n=0
  4. :rep
  5. set/a n+=1
  6. set /p str=输入3-10个字母:
  7. for /l %%a in (0,1,10) do (
  8.         set one=!str:~%%a,1!
  9.         if not defined one if %%a geq 3 (goto :ok) else (echo 不足3个&goto :rep)
  10.         if !one! lss a echo 有非法字符&goto :rep
  11.         if !one! gtr z echo 有中文字符&goto :rep
  12. )
  13. echo 超过10个&goto :rep
  14. :ok
  15. echo 你输入了%n%次终于搞对一次了:!str!
  16. echo.
  17. echo 再来!
  18. goto :begin
复制代码

[ 本帖最后由 netbenton 于 2009-4-23 23:43 编辑 ]

TOP

回复 31楼 的帖子

竟然忘了,可以通过 set var 列举变量的方式来避免直接显示变量值,就可以绕过特殊字符问题。
set var|findstr /x "var=[a-Z]*"

感谢此帖提醒:http://www.bathome.net/thread-4159-1-1.html
2

评分人数

命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

谢谢Batcher的提醒,45L代码已经修改

TOP

回复 45楼 的帖子

学学怎么调试代码吧:
不要双击运行
把代码保存为C:\test.bat
把@echo off删除
开始
运行
cmd
C:\test.bat
看看执行过程再好好想想
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. set /p str=请输入3到10个字母:
  3. set var=%str%
  4. set n=0
  5. :begin
  6. set a=%str:~0,1%
  7. set /a n+=1
  8. set str=%str:~1%
  9. if not "%str%"=="" goto begin
  10. if %n% lss 3 echo 字符数不符&&goto eof
  11. if %n% gtr 10 echo 字符数不符&&goto eof
  12. echo %var%|findstr "[^a-z]">nul&&echo 输入的字符不完全是字母&&goto eof
  13. echo 输入正确!
  14. :eof
  15. pause
复制代码

[ 本帖最后由 cainiao736 于 2009-4-6 22:35 编辑 ]

TOP

32l学习了,思路很别致

TOP

回复 42楼 的帖子

Done.
改好了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 40楼 的帖子

确实应该是执行不到,batcher 是否应该考虑改一下endlocal的位置。
技术问题请到论坛发帖求助!

TOP

回复 39楼 的帖子

点,在正则表达式中是通配符,表示任意一位字符。
.. 表示任意2位字符
... 表示任意3位字符
.... 表示任意4位字符
以此类推
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表