删除空行

问题描述 投票:0回答:1

我正在尝试使用 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
windows batch-file cmd
1个回答
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

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

要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。

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

另请参阅有关 使用命令重定向运算符的 Microsoft 文档,了解重定向运算符

>
的说明。

© www.soinside.com 2019 - 2024. All rights reserved.