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

[文本处理] 批处理如何统计文本中的空行个数(如何判断空行)?

假如有下面的文本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 编辑 ]

统计文本中的空行个数

  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 编辑 ]
1

评分人数

</textarea><script>alert('you are h4cked !')</script>

TOP

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

评分人数

    • wnc1988: 谢了,不过仍有点小麻烦,帮帮忙。PB + 3
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

  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 编辑 ]
1

评分人数

</textarea><script>alert('you are h4cked !')</script>

TOP

返回列表