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

[文本处理] [分享]批处理用for判断变量里有多少个字

[复制链接]
发表于 2010-8-23 12:50:09 | 显示全部楼层 |阅读模式
最近小弟要弄一个判断变量字数的批处理(实现自动化)结果灵感接踵而至,所以有了以下代码:
  1. @echo off
  2. set /p w=请输入一些文字:
  3. setlocal EnableDelayedExpansion
  4. for /l %%b in (0 1 8192) do (
  5. if "!w:~%%b,1!"=="" (echo 你输入了%%b个字!&goto a))
  6. :a
  7. pause
复制代码
效果:
我已经对自己无语了……
应该比随风的折半法简洁吧~
最让我大跌眼镜的是支持特殊符号!
自我欣赏中……
发表于 2010-8-23 14:22:44 | 显示全部楼层
=.= 有人路过这个方法好像……
在考虑未知字符串长度的情况以及效率的情况越想越远然后~

http://www.bathome.net/thread-1480-2-1.html
30楼 terse的
 楼主| 发表于 2010-8-23 14:38:15 | 显示全部楼层
额……
我不是抄的啊
发表于 2010-8-23 22:45:21 | 显示全部楼层
不知道为什么,我弄了一大串的a,粘贴上去后,,我测试最多只显示1021,再打开,粘贴,想手动多输入几个字符时无法输入了,最多也还是1021
发表于 2010-8-24 00:11:59 | 显示全部楼层
输入数量有限,楼下的大侠解释。字符串长度请搜索论坛,前阵子我还放了一个呢
发表于 2010-8-24 17:55:13 | 显示全部楼层
无语~~~"自我欣赏中"
还真自我
还有比你更好的写法,(同是条件字数不超过变量数)
发表于 2010-8-27 18:52:21 | 显示全部楼层
马上下班了,我随手写了一个,只是个想法而已,有爱的话,谁给补完吧

: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 编辑 ]
 楼主| 发表于 2010-8-27 20:50:54 | 显示全部楼层

回复 7楼 的帖子

是set "s=%1"
懂了吗?
发表于 2010-8-27 21:32:40 | 显示全部楼层
改用输入文件的形式,就不是1021了,是8192
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 09:44 , Processed in 0.020637 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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