从 Windows 批处理脚本中的文本文件中删除始终以“TRAILER”开头的最后一行

从 Windows 批处理脚本中的文本文件中删除始终以“TRAILER”开头的最后一行

我想使用 Windows 批处理脚本从文本文件中删除最后一行。最后一行将始终像“TRAILER|”。我该如何实现。我的 .txt 文件如下所示:

1220|6963|卡车|5760|

1221|6964|卡车|1440|

1220|6965|卡车|2880|

1221|6966|卡车|2880|

1221|6967|卡车|2880|

预告片|5|

答案1

我按照你的方式尝试写:

findstr /v TRAILER %SFTP_INDIR%\Location*.txt > %IN_DIR%\loc.txt

这里%SFTP_INDIR% = D:\Batch\Batch_FWK\SFTP\inbox.

输出文件 loc.txt 现在不包含最后一条记录TRAILER|5|,但它在输出文件中像这样打印每条记录:

D:\Batch\Batch_FWK\SFTP\inbox\Location.20150528060210.txt:1220|6963|TRUCK|5760|

回答经过罗密欧·尼诺夫

findstr /v TRAILER filename >newfilename

按照你想要的方式工作仅有的当删除最后一行时单身的文件。

这是因为:

如果搜索多个文件,结果将以找到文本的文件名作为前缀。如果请求明确针对单个文件,或者搜索管道输入或重定向输入,则不会打印文件名。

为了解决这个限制,您可以使用for命令处理多个单个文件并将结果输出到一个文件。

在批处理文件中尝试以下命令:

for /f "tokens=*" %%a in ('dir /b "%SFTP_INDIR%\Location*.txt"') do findstr /v TRAILER %%a >> %IN_DIR%\loc.txt

从命令行运行时替换%%%


来源查找字符串

相关内容