
我想使用 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
如你所願僅有的當從 a 中刪除最後一行時單身的文件。
這是因為:
如果搜尋多個文件,結果將以找到文字的檔案名稱作為前綴。如果請求明確針對單一文件,或搜尋管道輸入或重定向輸入,則不會列印文件名稱。
為了解決這個限制,您可以使用一個for
命令來處理多個單一檔案並將結果輸出到一個檔案。
在批次檔中嘗試以下命令:
for /f "tokens=*" %%a in ('dir /b "%SFTP_INDIR%\Location*.txt"') do findstr /v TRAILER %%a >> %IN_DIR%\loc.txt
從命令列運行時替換%%
為%
.
來源查找字串