社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 731阅读
  • 0回复

[分享]批量删除任意文本文件空行或前几行的批处理程序

楼层直达
z3960 
级别: FLY版主
发帖
796916
飞翔币
213263
威望
215737
飞扬币
2682259
信誉值
8

在计算的时候经常需要将output文件中的一些无用头部信息删掉,以便从中提取数据进行下一步计算。如果*.txt, *.log 或*.out之类的文件很多,要一个个打开删除之必然很费时费力。这是可通过编写BAT批处理文件实现批量删除文本文件或任意文件的前几行内容。

       将以下代码复制到记事本或ultraedit中,另存为*.bat 批处理程序文件后双击运行之即可

@ECHO OFF
SET TxtDir="d:\folder"
SET /A N=2
ECHO 删除行操作开始...
CD /D %TxtDir%
FOR /F "tokens=1 delims=" %%I IN ('DIR /A /B *.txt') DO ((MORE +%N% "%%I">"%%I_")&(DEL /A /F /Q "%%I")&(REN "%%I_" "%%I"))
ECHO 恭喜,执行任务结束。
PAUSE

       上述代码中,根据情况不同需要修改三处地方:第二行“TxtDir="d:\folder"”部分表示文本文件所在的路径,在第三行中的“/A N=2”中可设置需要删除的前N行的数目,第六行中的“*.txt”表示需要读取的文本文件的扩展名,可支持任意扩展名。

       如果需要删除任意文本文件中的空行,则可将下面的代码做出bat批处理文件后运行即可:

@echo off
for %%a in (*.txt) do (
for /f "tokens=*" %%b in ('type "%%a"') do echo %%b>>"1%%a"
del "%%a"
ren "1%%a" "%%a"
)

        当然,还有一些第三方工具,比如在线编辑器Sed、中文编辑排版专家DreamEdit 亦可实现,但远不如批处理文件来得轻便。
 
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。