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

[文本处理] [已解决]BAT获取字符串长度为何提示总字符长度为8190?

[复制链接]
发表于 2014-6-29 10:49:42 | 显示全部楼层 |阅读模式
本帖最后由 lemoncn 于 2014-7-4 13:19 编辑

想用bat弄个动态获取字符串长度的小玩意,但单把函数块里的内容拿出来执行是没问题的,一整成函数动态获取就不行了。老提示总字符长度为8190。代码如下,请各位大神帮忙看下问题出在哪里。
  1. echo off&setlocal ENABLEEXTENSIONS
  2. title 获取动态字符串长度
  3. set /p "str1=请键入第一个字符串:"
  4. set /p "str2=请键入第二个字符串:"
  5. set "srvnm=srv-%str1%-%str2%"
  6. echo 最终的字符串为:%srvnm%
  7. call:GetStrLen %srvnm%
  8. echo.&pause&goto:eof

  9. ::获取字符串长度
  10. :GetStrLen
  11. rem setlocal
  12. set str=%1
  13. set /a max=8190,min=0
  14. for /l %%a in (1,1,14) do (
  15.     set /a "num=(max+min)/2"
  16.     for /f "delims=" %%b in ("!num!") do if "!str:~%%b!" equ "" (set /a max=num) else set /a min=num
  17. )
  18. if "!str:~%num%!" neq "" set /a num+=1
  19. rem endlocal
  20. echo 经计算字符串%str%共有%num%个字符
  21. pause>nul

  22. :eof
  23. exit
  24. pause
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-6-29 13:11:57 | 显示全部楼层

  1. setlocal enabledelayedexpansion
复制代码
不是

  1. setlocal ENABLEEXTENSIONS
复制代码

评分

参与人数 1技术 +1 收起 理由
lemoncn + 1 谢谢

查看全部评分

发表于 2014-6-29 14:18:21 | 显示全部楼层
这样试:
  1. @echo off
  2. title 获取动态字符串长度
  3. set /p str1=请键入第一个字符串:
  4. set /p str2=请键入第二个字符串:
  5. set "str=srv-%str1%-%str2%"
  6. set /p "=最终的字符串为:%str%" <nul & echo,
  7. call:GetStrLen n
  8. echo 共 %n% 个字符
  9. pause&goto:eof

  10. ::获取字符串长度
  11. :GetStrLen
  12. setlocal enabledelayedexpansion
  13. set /a max=8190,min=0
  14. for /l %%a in (1,1,14) do (
  15.     set /a "num=(max+min)/2"
  16.     for /f "delims=" %%b in ("!num!") do (
  17.         if "!str:~%%b!" equ "" (set /a max=num) else set /a min=num
  18.     )
  19. )
  20. if "!str:~%num%!" neq "" set /a num+=1
  21. endlocal & set "%1=%num%"
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-6-29 15:23:10 | 显示全部楼层
回复 3# apang

现在正常了 原来是命令调错了 谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 06:35 , Processed in 0.031563 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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