Board logo

标题: [文本处理] 批处理如何统计文本中的空行个数(如何判断空行)? [打印本页]

作者: wnc1988    时间: 2009-11-5 10:17     标题: 批处理如何统计文本中的空行个数(如何判断空行)?

假如有下面的文本1.txt:
adas
ss

dsa

ds
ds

fedf
如何算出它包含几个空行?
  1. @echo off&setlocal enabledelayedexpansion
  2. set /a n=0
  3. for /f "delims=" %%i in (1.txt) do (
  4. set str=%%i
  5. if "!str!"=="" (set /a n+=1)
  6. )
  7. echo 空行个数为: !n!
  8. pause
复制代码
上面是我写的简单代码,是不是if后面的判断条件错了呢?
下面的两位都能解决统计空行个数的问题,谢谢了。不过我最主要的目的是
如果某一行是空行,那么输出这个空行后面的那一行。也就是说我想得到的是
dsa
ds
fedf
可能麻烦,不过这是我学习过程中遇到的一个真实的问题。

[ 本帖最后由 wnc1988 于 2009-11-5 16:19 编辑 ]
作者: vsbat    时间: 2009-11-5 12:22     标题: 统计文本中的空行个数

  1. @echo off
  2. set a=0
  3. set b=0
  4. for /f "delims=" %%j in (1.txt) do set /a b+=1
  5. for /f "delims=" %%i in ('findstr /n ".*" 1.txt') do set /a a+=1
  6. set /a k=%a%-%b%
  7. echo 空行数:%k%
  8. pause>nul
复制代码
利用 findstr / n 与 纯 for 读取的差值
空行指无任何字符(包括空格)的行------
好用不?

[ 本帖最后由 vsbat 于 2009-11-5 12:28 编辑 ]
作者: zqz0012005    时间: 2009-11-5 12:33

  1. findstr "^$" 1.txt | find /c /v ""
复制代码

作者: vsbat    时间: 2009-11-5 20:34

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=0
  4. for /f "delims=" %%i in ('findstr /n "^$" 1.txt') do (set t=%%i&set t=!t::=!&set /a t+=1
  5. for /f "delims=" %%j in ('findstr /n ".*" 1.txt') do set /a a+=1&set k=%%j&set k=!k:*:=!&if !a! equ !t!  echo !k!
  6. set a=0)
  7. pause>nul
复制代码
上面这个是 显示 空行下一行内容的代码-----

for /f "delims=" %%i in ('findstr /n "^$" 1.txt') do (set t=%%i&set t=!t::=!&echo 第!t!行是空行)
这一句是找到 空行的行号(findstr /n 情况下)  你要是在想用什么 别的命令 -----在它的基础上改
注:感谢zqz 斑竹的 findstr    "^$" 1.txt  的高效代码,这一句就是 查找空行

[ 本帖最后由 vsbat 于 2009-11-5 20:35 编辑 ]




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