我正在尝试使用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
答案 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文档,以获取有关重定向操作符>
的解释。