我想使用 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
从命令行运行时替换%%
为%
。
来源查找字符串