我正在尝试使用 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
一个简单的解决方案是:
@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 文档,了解重定向运算符
>
的说明。