Borrar primer línea en TXT

Quisiera crear un .BAT para que me edite un TXT y me borre la primer línea, el problema es que los archivos tienen nombres cada ves que lo bajo del servidor (EJ: NOTFIS_316_1874722_20181203102507; NOTFIS_416_1874780_20181203110505)

La primer línea tiene 89 caracteres de largo SIEMPRE

1 respuesta

Respuesta
1

Este bat te eliminaría la primera línea de cualquier archivo situado en la carpeta en la que hayas creado el BAT si su nombre empieza por NOTFIS:

@echo off
for /f %%x in ('dir /b notfis*.*') do call :tratar "%%x"
goto :eof
:tratar
del /q temp.txt
for /f "skip=1 tokens=*" %%a in ('type %~1') do echo %%a>>temp.txt
Copy /y temp.txt "%1"

Utiliza un archivo auxiliar (temp.txt) donde va escribiendo las demás líneas y luego reescribe el archivo original con el contenido de este archivo auxiliar. Te recomiendo que, de momento, pongas delante del "copy" un "echo" para evitar que reescriba ese archivo original y así puedes ver si el contenido del temp.txt es el esperado.

Tal como está tiene el posible inconveniente de eliminar, también, las líneas en blanco. Pero eso podría arreglarse probablemente complicando un poco el BAT.

Si tienes alguna duda cuéntamela y veremos si puedo resolvértela.

Si me anduvo pero para un solo archivo

Así tengo los lotes que me llegan por día

Desde ya muchas gracias

Yo antes usaba para unir todo los TXT, pero la primera liea me daba información de cuando se genera el archivo o datos mezclados

type *.txt > informe.temp
rename informe.temp notfis.txt

Respecto a lo que dices de que te "anduvo pero para un solo archivo" debo aclarar que si hiciste lo que te sugería (anteponer "echo" al "copy" para evitar que te reescribiera los archivos y comprobar sobre el temp.txt si lo obtenido era lo esperado) es normal que solo vieras un resultado, el del último archivo tratado, porque el temp.txt se borra en cada tratamiento por lo que solo verás el del último. Si el resultado es bueno ya puedes quitar el "echo" y dejar que reescriba los archivos. Si quieres evitar correr riesgos puedes hacer una copia de los archivos que pueden ser tratados en otra carpeta antes de ejecutar el BAT. En todo caso el "echo" te debería sacar una línea por cada archivo tratado con un texto del tipo:

copy /y temp.txt "NOTFIS_xxx_xxxxxxx_xxxxxxxxxxxxxx"

Que te indicaría que si quitas el "echo" de esa línea va a hacer esos "copy" de verdad reescribiendo el segundo archivo con el contenido del temp.txt.

Respecto a lo segundo (unir todos los archivos mediante un TYPE con comodines) es una forma correcta de hacer la unión, pero tiene el inconveniente de que no quita ninguna línea de los archivos de partida, claro. No sé muy bien que puedo decirte en este caso.

¿Qué pasó con esto? Si no funciona como quieres dilo e intentaremos mejorarlo.

¡Gracias!

Le hice una modificación al final de la línea. Muchas gracias!

No me queda muy claro lo que hiciste, pero imagino que ya funciona a tu gusto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas