Board logo

标题: [文本处理] 批处理如何计算出字符串的长度,即有几个字符? [打印本页]

作者: digitbear    时间: 2015-1-29 19:05     标题: 批处理如何计算出字符串的长度,即有几个字符?

假定一字符串 “sadkljsa;dlw”,计算出这个字符串的长度,即有几个字符。
作者: CrLf    时间: 2015-1-29 19:28

给你个金光闪闪的链接:
http://bbs.bathome.net/viewthread.php?tid=11799
作者: amwfjhh    时间: 2015-1-29 19:36

果是金光闪闪……
作者: pcl_test    时间: 2015-1-29 19:36

本帖最后由 pcl_test 于 2015-1-29 19:41 编辑

回复 1# digitbear
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set "str=sadkljsa;dlw"
  4. for /l %%i in (0,1,1000) do if "!str:~%%i,1!"=="" set strlen=%%i && goto :end
  5. :end
  6. echo 字符串长度为 %strlen%
  7. pause
复制代码

作者: amwfjhh    时间: 2015-1-29 20:08

如果是非双字节字符的话,可以用一个比较BT的办法
  1. @echo off
  2. set "str=sadkljsa;dlw"
  3. set/p"=%str%"<nul>$
  4. for %%i in ("$") do echo,字符串总长 %%~zi 字节
  5. del /f $
  6. pause
复制代码

作者: 慕夜蓝化    时间: 2015-1-29 21:09

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set "str=sadkljsa;dlw"
  4. :length
  5. set/a n+=1
  6. if not "!str:~%n%!"=="" goto :length
  7. echo,%n%
  8. pause
复制代码
这个东西判断的是字符,如果是汉字,也是一个字符。
作者: 慕夜蓝化    时间: 2015-1-29 21:31

回复 5# amwfjhh

也看到了这样的写法;
  1. for /f %%i in ("$") do echo,%%~za
复制代码
还有:
  1. for %%i in ($) do echo,%%~za
复制代码
比较偏,就是在查询文件的大小,如果能批量使用就好了。
作者: terse    时间: 2015-1-30 01:16

假定没特殊情况的话 这样也可以
  1. set "str=sadkljsa;dlw"
  2. cmd /u /c echo;%str%|find /v /c ""
  3. pause
复制代码

作者: CrLf    时间: 2015-1-30 02:16

回复 8# terse


    不适用于宽字符
作者: terse    时间: 2015-1-30 09:39

回复 9# CrLf
嗯 确实是




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2