Elimine la última línea que siempre comienza con 'TRAILER' de un archivo de texto en un script por lotes de Windows

Elimine la última línea que siempre comienza con 'TRAILER' de un archivo de texto en un script por lotes de Windows

Quiero eliminar la última línea de un archivo de texto usando un script por lotes de Windows. la última línea siempre será como 'TRAILER|'. ¿Cómo puedo lograr eso? Mi archivo .txt se ve así:

1220|6963|CAMIÓN|5760|

1221|6964|CAMIÓN|1440|

1220|6965|CAMIÓN|2880|

1221|6966|CAMIÓN|2880|

1221|6967|CAMIÓN|2880|

TRÁILER|5|

Respuesta1

Lo intenté a tu manera escribiendo:

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

Aquí%SFTP_INDIR% = D:\Batch\Batch_FWK\SFTP\inbox.

El archivo de salida loc.txt no contiene el último registro TRAILER|5|ahora, pero imprimió cada registro de esta manera en el archivo de salida:

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

ElrespuestaporRomeo Ninov

findstr /v TRAILER filename >newfilename

funciona como te gustaríasoloal eliminar la última línea de unsolteroarchivo.

Esto es porque:

Si se busca en más de un archivo, los resultados tendrán como prefijo el nombre del archivo donde se encontró el texto. El nombre del archivo no se imprime si la solicitud fue explícitamente para un solo archivo o si se busca una entrada canalizada o redirigida.

Para evitar esta limitación, puede utilizar un forcomando para procesar varios archivos individuales y generar los resultados en un solo archivo.

Pruebe el siguiente comando en un archivo por lotes:

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

Cuando se ejecuta desde una línea de comando, reemplácelo %%con %.


Fuenteencontrartr

información relacionada