Board logo

标题: [文本处理] 批处理计算每行字符串的数量,只显示第一行? [打印本页]

作者: o00o00o00    时间: 2012-12-7 16:51     标题: 批处理计算每行字符串的数量,只显示第一行?

文本内容:a.txt
  1. baaaaaa aaaa bbbbbb ccccccccccc dddd
  2. aa aaaaaaa bbbbbbbb cccccccccc ddddddddddddd eeeeeee
  3. aaaaaaaaaaaa bbbbbbbbbbb cccccccccccccccccccc
  4. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa
  5. aaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbb
  6. aaaaaaaaa ccccccccc bbbbbbbbbbbbb ddddddddddddddddd
复制代码
批处理显示每行的字符串数量(不算空格
  1. @echo off
  2. Setlocal Enabledelayedexpansion
  3. set n=0
  4. for /f "delims=" %%i in (a.txt) do (
  5. set "ke=%%i"
  6. set ke1=!ke: =!
  7. set m=0
  8. :1
  9. if  "!ke1:~%m%,1!" gtr "" set /a m+=1&goto 1
  10. echo !m!
  11. )
  12. pause
复制代码


为什么只显示第一行的  我错在哪里!
作者: BAT-VBS    时间: 2012-12-7 19:12

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (a.txt) do (
  4.     set "ke=%%i"
  5.     set ke1=!ke: =!
  6.     set m=0
  7.     call :loop
  8. )
  9. pause
  10. goto :eof
  11. :loop
  12. if  "!ke1:~%m%,1!" gtr "" set /a m+=1&goto :loop
  13. echo !m!
复制代码

作者: o00o00o00    时间: 2012-12-8 07:17

我知道 这样可以   但是不知道为什么 我那样不可以
作者: o00o00o00    时间: 2012-12-8 07:23

还有 为什么在调用中一定要&goto loop  不可以另起一行goto loop
作者: Taurus    时间: 2012-12-8 08:32

本帖最后由 Taurus 于 2012-12-8 08:39 编辑

for 迥圈內不能用標韱啊

改這樣看
  1. @echo off
  2. Setlocal Enabledelayedexpansion
  3. set n=0
  4. for /f "delims=" %%i in (a.txt) do (
  5.     set "ke=%%i"
  6.     set ke1=!ke: =!
  7.     set m=0
  8.     call :1
  9. )
  10. pause
  11. exit
  12. :1
  13. if  "!ke1:~%m%,1!" gtr "" set /a m+=1&goto 1
  14. echo !m!
  15. goto :eof
复制代码





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