Exclua a última linha sempre começando com 'TRAILER' de um arquivo de texto no script em lote do Windows

Exclua a última linha sempre começando com 'TRAILER' de um arquivo de texto no script em lote do Windows

Quero remover a última linha de um arquivo de texto usando um script em lote do Windows. a última linha será sempre como 'TRAILER|'. Como posso conseguir isso. Meu arquivo .txt se parece com:

1220|6963|CAMINHÃO|5760|

1221|6964|CAMINHÃO|1440|

1220|6965|CAMINHÃO|2880|

1221|6966|CAMINHÃO|2880|

1221|6967|CAMINHÃO|2880|

TRAILER|5|

Responder1

Tentei do seu jeito escrevendo:

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

Aqui%SFTP_INDIR% = D:\Batch\Batch_FWK\SFTP\inbox.

O arquivo de saída loc.txt não contém o último registro TRAILER|5|agora, mas imprimiu cada registro assim no arquivo de saída:

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

OresponderporRomeu Ninov

findstr /v TRAILER filename >newfilename

funciona como você gostariaapenasao remover a última linha de umsolteiroarquivo.

Isto é porque:

Se mais de um arquivo for pesquisado, os resultados serão prefixados com o nome do arquivo onde o texto foi encontrado. O nome do arquivo não será impresso se a solicitação for explicitamente para um único arquivo ou se estiver pesquisando entrada canalizada ou entrada redirecionada.

Para contornar essa limitação, você pode usar um forcomando para processar vários arquivos únicos e gerar os resultados em um arquivo.

Experimente o seguinte comando em um arquivo em lote:

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 %.


Fonteencontrarstr

informação relacionada