标题: [文本处理] [已解决]如何判断输入字符的个数(长度)是否小于指定值? [打印本页]
作者: lovealei 时间: 2016-4-6 19:48 标题: [已解决]如何判断输入字符的个数(长度)是否小于指定值?
本帖最后由 pcl_test 于 2016-4-7 19:39 编辑
论坛,百度搜了下没有我要的,所以求助下大家
例如我下面的代码,要判断输入不能小于6位,如果小于6位则跳回来再输,如果大于等于6位则继续,同样也不能为空- :inputid
- cls
- echo\
- echo\
- set card=
- set /p card= 请输入要合并的会员卡号后8位:
- if defined card (
- goto ST2
- ) else (echo\ &echo 你的输入为空,请重新输入!&pause>nul&goto inputid)
复制代码
作者: /zhqsystem/zhq 时间: 2016-4-6 20:18
回复 1# lovealei
- @echo off&setlocal enabledelayedexpansion
- set "name=123456987654"
- set "name=%name: =%"
- for /l %%n in (0,1,8192)do (
- if not "!name:~%%n,1!"=="" set/a "n=1+%%n"
- )
- echo,%n%
- pause
复制代码
作者: pcl_test 时间: 2016-4-6 20:21
http://www.bathome.net/viewthread.php?tid=35020
作者: pcl_test 时间: 2016-4-6 20:30
- powershell -c "'1234567abc呵呵'.Length"
复制代码
作者: pcl_test 时间: 2016-4-6 20:40
- echo;1234567abc呵呵|gawk -F "" "{print NF}"
- echo;1234567abc呵呵|gawk "{print length($0)}"
复制代码
作者: pcl_test 时间: 2016-4-6 20:52
- set str=1234567abc呵呵
- mshta "javascript:new ActiveXObject('Scripting.Filesystemobject').GetStandardStream(1).Write('%str%'.length);close()"|more
复制代码
作者: WHY 时间: 2016-4-6 22:58
本帖最后由 WHY 于 2016-4-6 23:05 编辑
- set /p s=Input:
- if not "%s%" == "" if not "%s:~5%" == "" echo 不小于6个字符
复制代码
作者: lovealei 时间: 2016-4-7 16:04 标题: RE: 如何判断输入字符的个数(长度)是否小于指定值?
回复 1# lovealei
版主,可能是浏览器问题主题分类出不来,我试了IE8,2345,QQ浏览器都不行,所以没有指定主题分类
作者: lovealei 时间: 2016-4-7 16:29
pcl_test 发表于 2016-4-6 20:30
这个是批处理代码吗?怎么用呢
作者: lovealei 时间: 2016-4-7 16:29
WHY 发表于 2016-4-6 22:58
试了下,只能判断输入为空,长度还是不行啊
作者: lovealei 时间: 2016-4-7 17:48
最后翻了下论坛还是解决了,多作了一个比较,效率不知道,代码贴出来- :inputid
- cls
- echo\
- echo\
- set card=
- set /p card= 请输入要合并会员的6位身份证号码:
- if defined card (goto ST1) else (cls&echo\&echo\&echo 你的输入为空,按任意键重新输入!&pause>nul&goto inputid)
-
- :ST1
- call :strlen len
- if %len% NEQ 6 (cls&echo\&echo\&echo 请至少输入6位身份证号码!按任意键重新输入!&pause>nul&goto inputid) else goto ST2
-
- :strlen
- setlocal EnableDelayedExpansion&set n=0
- :strlen_loop
- if "!card:~%n%,1!" neq "" set /a n+=1&goto strlen_loop
- endlocal&set "%~1=%n%"&goto :eof
复制代码
作者: happy886rr 时间: 2016-4-7 18:04
本帖最后由 happy886rr 于 2016-4-7 18:06 编辑
- 欢迎来到ST2做客,正在开启人工智能...
- @echo off
- :INPUTID
- cls&echo;&echo;&set card=&set/p card=请输入要合并的会员卡号后8位:
- if defined card (if "%card:~5%"=="" (goto INPUTID)&goto ST2) else (set/p=你的输入为空,请重新输入&goto INPUTID)
- :ST2
- sort %0|more +7
- for /l %%i in (1 1 30) do (call,color %%time:~-1%%f&ping -n 2 127.1>nul)
复制代码
回复 11# lovealei
作者: lovealei 时间: 2016-4-11 10:31
回复 lovealei
happy886rr 发表于 2016-4-7 18:04
这个试了也行啊,
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |