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

[文本处理] 【已解决】批处理删除空白行

本帖最后由 rockjean 于 2019-3-27 19:45 编辑

有如下数据:
  1. 批处理之家的大神们 都是好人 技术都过硬
  2. 批处理之家的大神们 都是好人 技术都过硬
  3. 批处理之家的大神们 都是好人 技术都过硬
  4. 批处理之家的大神们 都是好人 技术都过硬
  5. 批处理之家的大神们 都是好人 技术都过硬
  6. 批处理之家的大神们 都是好人 技术都过硬
复制代码
请问用批处理怎么把里面的空白行删掉呢?

回复 1# rockjean


没完全明白你的需求,你是要删除指定txt文件内的空白行还是要删除一些指定文件内或者是文件夹下所有文件的的空白行?
www.imxyd.com

TOP

1

评分人数

    • CrLf: +1PB + 10 技术 + 1
www.imxyd.com

TOP

  1. (gc test.txt) | ? {$_.trim() -ne "" }
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

www.imxyd.com

TOP

回复 2# 惆怅而又凄凉


    比如一个文件夹下面有一堆文本文件:01.txt, 02.txt, 03.txt, ... 100.txt,
这些文本都有如上描述的空白行,我想删掉空白行,但文件名不变。

TOP

回复 6# rockjean

写出来你不一定能用。
  1. @Echo Off & CD /d "%~dp0"
  2. Powershell -execution remotesigned ls *.txt^|%%{sc $_ -value $((gc $_) -notmatch '^^$') -force};
复制代码

TOP

我记得for默认就会吞掉空行,
  1. @echo off
  2. (for /f "tokens=*" %%a in (src.txt) do echo %%a)>dst.txt
复制代码

TOP

回复 8# 523066680

for 是有默认过滤空行的。楼主还要保存原来的文件名,数量多。写起来不如PS简单。

TOP

回复 9# xczxczxcz

    哦,只要不用批处理,海阔天空

TOP

::下载第三方sed.exe
sed -i "/^$/d" a.txt
如无特别说明,代码测试环境均为 XP SP3

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/s/b *.txt') do (
  3. (for /f "delims=" %%b in ('type "%%a"') do echo;%%b)>tmp
  4. move tmp "%%a"
  5. )
复制代码
QQ 33892006

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /a-d *.txt') do (
  3.     (for /f "tokens=*" %%b in ('type "%%a"') do (
  4.         echo,%%b
  5.     ))>"%%a.tmp"
  6.     move /y "%%a.tmp" "%%a"
  7. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# ivor


    虽然看不懂,还是感谢~

TOP

回复 9# xczxczxcz


    关键是不会PowerShell

TOP

返回列表