I tried in your way by writing :
findstr /v TRAILER %SFTP_INDIR%\Location*.txt > %IN_DIR%\loc.txt
Here
%SFTP_INDIR% = D:\Batch\Batch_FWK\SFTP\inbox.
Output file loc.txt does not contain last record
TRAILER|5|
now, but it printed each record like this in the output file:D:\Batch\Batch_FWK\SFTP\inbox\Location.20150528060210.txt:1220|6963|TRUCK|5760|
A resposta por Romeo Ninov
findstr /v TRAILER filename >newfilename
funciona como você deseja somente ao remover a última linha de um arquivo único .
Isso porque:
If more than one file is searched, the results will be prefixed with the filename where the text was found. The file name is not printed if the request was explicitly for a single file, or if searching piped input or redirected input.
Para contornar essa limitação, você pode usar o comando for
para processar vários arquivos individuais e enviar os resultados para um arquivo.
Tente o seguinte comando em um arquivo em lotes:
for /f "tokens=*" %%a in ('dir /b "%SFTP_INDIR%\Location*.txt"') do findstr /v TRAILER %%a >> %IN_DIR%\loc.txt
Ao executar a partir de uma linha de comando, substitua %%
por %
.
Fonte findstr