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


0

我想使用Windows批处理脚本从文本文件中删除最后一行。最后一行总是像'TRAILER |'。我怎样才能做到这一点。我的.txt文件看起来像:

1220 | 6963 |卡车| 5760 |

1221 | 6964 |卡车| 1440 |

1220 | 6965 |卡车| 2880 |

1221 | 6966 |卡车| 2880 |

1221 | 6967 |卡车| 2880 |

预告片| 5 |


Answers:


0

我试着通过写作:

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

按你的意愿工作 只要 从a中删除最后一行时 文件。

这是因为:

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

要绕过此限制,您可以使用a for 命令处理多个单个文件并将结果输出到一个文件。

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

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

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


资源 FINDSTR

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.