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

[文本处理] 批处理bat脚本怎么求字符串长度?

win11系统的bat脚本怎么计算字符串长度

本帖最后由 aloha20200628 于 2024-12-30 12:33 编辑


看几个参考帖可能会花眼...批处的这个经典话题时至今日也许可简括如下(仅供参考)》
一。纯批处的解法中至为经典的版本就是源自2008年 https://www.dostips.com 分享的老帖,后来被简化的常用版本及其用法示例类似如下,其中的核心子过程 :strLen 简略了命令行参数的防空处理
  1. @echo off &setlocal
  2. set "str=字符串长度&123"
  3. call :strLen str slen
  4. echo,%slen%
  5. pause &exit/b
  6. :strLen // %1=字符串变量名 %2=字符串长度变量名
  7.    setlocal enabledelayedexpansion &set "_s=!%~1!" &set "_l=1"
  8.    for %%p in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
  9.       if "!_s:~%%p,1!" neq "" set/a "_l+=%%p" &set "_s=!_s:~%%p!")
  10.    endlocal &set "%~2=%_l%" &exit/b
复制代码
二。如果系统已预装了 powershell 甚至 python 或下载了 gawk.exe (可直接从本坛下载即用),其更简洁的解法版本如下
  1. set "str=字符串长度&123"
  2. :: Powershell版本
  3.    for /f "delims=" %%v in ('powershell " '%str%'.length" ') do echo,%%v
  4. :: Python版本
  5.    for /f "delims=" %%v in ('Python -c "print(len('%str%'))" ') do echo,%%v
  6. :: gawk版本 // 为防cmd代码转义须用双引号包裹目标字符串故导致字符串计算长度+2
  7.    for /f "delims=" %%v in ('echo,"%str%"^|gawk "{print length()}" ') do set/a "v=%%v-2"
  8.    echo,%v%
  9. pause&exit/b
复制代码
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

回复 1# daxiang2


批处理判断字符串长度
http://bbs.bathome.net/thread-1480-1-1.html

批处理用折半法计算字符串长度
http://bbs.bathome.net/thread-4219-1-1.html

批处理求字符串长度的表驱动算法
http://bbs.bathome.net/thread-5994-1-1.html

批处理字符串长度函数:二分搜索算法
http://bbs.bathome.net/thread-6677-1-1.html

集效率简短于一身的求字符串长度的批处理方法
http://bbs.bathome.net/thread-11799-1-1.html
1

评分人数

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

TOP

返回列表