删除空行

时间:2020-07-03 20:45:53

标签: windows batch-file cmd

我正在尝试使用Windows批处理文件从文本文件中删除空行。

原始文件

Test 1234
Test 12

Test 11

Test 1134

修改后的文件

Test 1234
Test 12
Test 11
Test 1134

*请注意,原始文件的第一行也是空行。

我已经尝试过了,但是并没有做任何事情:

for /F "delims=" %a in (file.txt) do echo %a

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是:

@echo off
if exist "file.txt" %SystemRoot%\System32\findstr.exe /R "^." "file.txt" >"file.tmp"
if exist "file.tmp" for %%I in ("file.tmp") do if %%~zI == 0 (del "file.tmp") else move /Y "file.tmp" "file.txt"

FINDSTR 对行首包含至少一个字符的行运行正则表达式查找,因此 FINDSTR 输出所有不为空的行。 FINDSTR 的输出重定向到临时文件file.tmp

创建的临时文件将完全替换输入文件(输入文件存在),并且不为空,这意味着在输入文件中至少找到一个非空行。临时文件在创建时即被删除,但为空文件。

要了解所使用的命令及其工作方式,请打开command prompt窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • del /?
  • echo /?
  • findstr /?
  • for /?
  • if /?
  • move /?

另请参阅有关Using command redirection operators的Microsoft文档,以获取有关重定向操作符>的解释。

相关问题