我的文字文件
Header
A,B,C,D,E
F,G,H,I,J
K,L,M,N,O
Footer
我想要删除页脚并在页脚下方清空行(空行不是静态的)和我预期的输出
Header
A,B,C,D,E
F,G,H,I,J
K,L,M,N,O
我尝试了下面的代码,但它只删除了最后一个空行。
set row=
for /F "delims=" %%j in (file.txt) do (
if defined row echo.!row!>> newfile.txt
set row=%%j
)
答案 0 :(得分:2)
这是执行任务的通用方法; 如果您想要不同的东西,请考虑提供更具体的信息和示例文件:
@Echo Off
SetLocal DisableDelayedExpansion
Set "SrcFile=file.txt"
If Not Exist "%SrcFile%" Exit /B
Copy /Y "%SrcFile%" "%SrcFile%.bak">Nul 2>&1||Exit /B
( Set "Line="
For /F "UseBackQ Delims=" %%A In ("%SrcFile%.bak") Do (
SetLocal EnableDelayedExpansion
If Defined Line Echo !Line!
EndLocal
Set "Line=%%A"))>"%SrcFile%"
EndLocal
Exit /B
您应该在第4
行更改文件名,以匹配您的实际源文件名称。如果您对结果感到满意,可以选择删除.bak
文件(这是原始文件的备份,为安全而保存)。
注意: 结果文件将以正常CRLF
结束(即底部会有一个空行)。< / em>的
答案 1 :(得分:1)
如何简单:
FINDSTR /R /I /V "^$ Footer" file.txt>>newfile.txt
(将用空格分隔)将应用的所有正则表达式:
答案 2 :(得分:0)
非常直接:阅读直到你点击页脚,然后退出(删除页脚和之后的任何内容):
@echo off
for /F "delims=" %%j in (file.txt) do (
echo %%j|findstr /b "Footer" >nul && goto :done
echo %%j>> newfile.txt
)
:done