BAT eliminar ultima fila TXT

Como veo que eres muy experto y gran colaborador quería saber si podías ayudarme.

Tengo una carpeta con 900 ficheros txt que siguen una secuencia en su nombre. Por ejemplo FICHERO001.txt, FICHERO002.txt, etc.

Necesito en TODOS los ficheros, eliminar las 2 últimas de texto.
¿Existe un BAT que pueda hacerlo con todos?

1 respuesta

Respuesta

Prueba con esto:

@echo off
Setlocal EnableDelayedExpansion
set carpeta=d:\Carpeta prueba
set /a nlinbor=2
set sufijo=NUE
pushd %carpeta%
for /f "tokens=*" %%n in ('dir /b FICHERO*.txt') do call :tratfich "%%n"
popd
goto :eof
:tratfich
echo Tratando fichero %~1
for /f "tokens=2 delims=:" %%x in ('find /c /v "" "%~1"') do set nl=%%x
set /a nl=%nl%-%nlinbor%
set /a n = 1
for /f "tokens=*" %%l in ('type "%~1"') do if !n! leq %nl% echo %%l>>%~n1_%sufijo%.%~x1&set /a n+=1
goto :eof

He parametrizado el número de líneas finales que se deben despreciar (variable NLINBOR), la carpeta de trabajo (variable CARPETA) y el sufijo a añadir al nombre de cada archivo de salida (variable SUFIJO). Tal como está el tratamiento en el archivo de salida no se incluirán las líneas en blanco que hubiera en el archivo de entrada. Si eso supone algún problema habría que reestudiar el asunto. Tal como está se generarían ficheros con nombres como FICHERO001_NUE.txt, FICHERO002_NUE.txt. Si prefieres otra solución dilo y lo miramos.

¡Gracias! Muchas gracias por tomarte el tiempo en responderme y ayudarme. Lo probaré el lunes y ya te cuento. Un saludo!

¿Pudiste probarlo?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas