标题: [文本处理] [分享]批处理用for判断变量里有多少个字 [打印本页]
作者: zcydez 时间: 2010-8-23 12:50 标题: [分享]批处理用for判断变量里有多少个字
最近小弟要弄一个判断变量字数的批处理(实现自动化)结果灵感接踵而至,所以有了以下代码:- @echo off
- set /p w=请输入一些文字:
- setlocal EnableDelayedExpansion
- for /l %%b in (0 1 8192) do (
- if "!w:~%%b,1!"=="" (echo 你输入了%%b个字!&goto a))
- :a
- pause
复制代码
效果:
我已经对自己无语了……
应该比随风的折半法简洁吧~
最让我大跌眼镜的是支持特殊符号!
自我欣赏中……
作者: 523066680 时间: 2010-8-23 14:22
=.= 有人路过这个方法好像……
在考虑未知字符串长度的情况以及效率的情况越想越远然后~
http://www.bathome.net/thread-1480-2-1.html
30楼 terse的
作者: zcydez 时间: 2010-8-23 14:38
额……
我不是抄的啊
作者: sgaizxt001 时间: 2010-8-23 22:45
不知道为什么,我弄了一大串的a,粘贴上去后,,我测试最多只显示1021,再打开,粘贴,想手动多输入几个字符时无法输入了,最多也还是1021
作者: cjiabing 时间: 2010-8-24 00:11
输入数量有限,楼下的大侠解释。字符串长度请搜索论坛,前阵子我还放了一个呢
作者: qq106942397 时间: 2010-8-24 17:55
无语~~~"自我欣赏中"
还真自我
还有比你更好的写法,(同是条件字数不超过变量数)
作者: sleepinglord 时间: 2010-8-27 18:52
马上下班了,我随手写了一个,只是个想法而已,有爱的话,谁给补完吧
:strlen
if "%1" == "" (
if "%2" == "" (echo 0) else (echo %2) goto :eof
else (
if "%2" == "" (
call :strlen %1 0
goto :eof)
else (
set s = %1 //这里要是能不set,直接把传入的参数处理一下再传就更好了!
set /a n = %2+1
call :strlen %s:~1% %n%
goto :eof)
)
其实还有更简单的想法,把%1(字符串)和%2(长度)每次给echo出来,然后用 | 管道到自己,这样应该更方便。不过这样的话strlen就得单独写成一个.bat
[ 本帖最后由 sleepinglord 于 2010-8-27 18:56 编辑 ]
作者: zcydez 时间: 2010-8-27 20:50 标题: 回复 7楼 的帖子
是set "s=%1"
懂了吗?
作者: ZJHJ 时间: 2010-8-27 21:32
改用输入文件的形式,就不是1021了,是8192
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |