bat如何批量删除文本文件中只有空格而没有别内容的行

例如一个文本是这样
1。正文内容 正文内容
2。(3个空格)
3。正文内容 正文内容
4。(2个空格)
5。正文内容 正文内容
6。(正常空行,也就是直接回车的行)
7。正文内容 正文内容

我需要删除那些只有空格而没有别的内容的行,也就是上面例子中的第2行和第3行这种,但是又不会删除正常空行,也不会删除正文中的空格

第1个回答  2014-01-26
我想到的两行
代码一:
for /f "delims=" %%i in ('type "原文件.txt"') do echo %%i>>$ 2>nul
move $ 原文件.txt

上面我们团长那个更简单,只要一行
代码二:
findstr . 原文件.txt>$&move $ 原文件.txt

代码三:
哈哈,居然可以直接去空格

@echo off
findstr/vrc:"^[ ]*$" 原文件.txt>$
move $ 原文件.txt

TAB符肯定被百度吃了,末尾行还是去不掉
研究结束
第2个回答  推荐于2016-02-25
@echo off
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* test.txt') do (
if "%%b"=="" ( echo. ) else (
for /f %%c in ("%%b") do echo.%%b
)
))>new.txt

将test.txt中纯空格(制表符)的行删除,其余行不变,结果写入文件new.txt

追问

试了下,只对开头的行有作用,出现正文后,正文中间和结尾出现的只有空格的行却不起作用了

追答

出现正文后,正文中间和结尾出现的只有空格的行却不起作用了,可以把开始不起作用的正文,没有删除的空格行,和空格行其后的一行给我看一下吗

追问

下面是文本内容

 
测试用
 
  测试用

  测试用

  测试用测试用测试用测试用测试用 测试用测试用测试用测试用 测试用测试用

  测试用测试用测试用

  测试用测试用?

  测试用测试用测试用

 

追答@echo off&setlocal enabledelayedexpansion
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* test.txt') do (
if "%%b"=="" ( echo.) else (
set "line=%%b"
set "line=!line: =!"
set "line=!line: =!"
set "c=!line!"
if defined c echo.%%b
)
))>new.txt

没删除的空格是中文空格,原程序只删除英文空格行,已经改成删除中英文空格组成的行

本回答被提问者采纳