MS-DOS: bat para extraer primera línea de varios archivos txt

A ver si alguien me puede ayudar con este tema: Tengo varios archivos txt (unos 3.000) de los que necesito conseguir un listado (si puede pasarse a Excel, bien, si no a otro fichero txt y luego lo importo en Excel) con 2 columnas: en la primera de ellas debería aparecer el nombre del fichero y en la segunda, la primera línea del contenido del mismo.

La verdad es que de MS-DOS no tengo mucha idea a excepción de los comandos más básicos, y estoy un poco perdido.

1 Respuesta

Respuesta
2

En principio no parece muy complicado. Habría que saber si todos los archivos están en el mismo directorio/carpeta y si la primera línea de esos archivos puede tener algún carácter problemático (como empezar por espacios, contener caracteres !, <, >, ", *, |, etc.).

Por ejemplo, este bat:

@echo off
if exist temp.csv del /f temp.csv
set ruta=%~1
for /f "tokens=*" %%x in ('dir "%ruta%\*.txt" /b') do (call :fichero "%%x")
goto :fin
:fichero
for /f "tokens=*" %%a in ('type "%ruta%\%~1"') do (echo %~1;%%a>>temp.csv&goto :eof)
:Fin

Dejaría en el archivo temp. Csv una línea que contendría el nombre del archivo y el contenido de la primera línea del mismo, separados por ";" (para facilitarle las cosas a Excel, pero podría ser cualquier otro carácter) pero si la primera línea comienza por espacios elimina esos todos los espacios anteriores al primer carácter distinto de espacio. Se le pasa como parámetro la ruta de la carpeta/directorio donde están los archivos con extensión TXT. Si esa ruta contiene espacios se pasará entre comillas.

Si lo salvas y le das el nombre prueba.bat y la carpeta donde están los 3000 archivos txt es c:\Carpeta de prueba tendrías que llamarlo así:

Prueba "c:\carpeta de prueba"

Mira a ver si te sirve y dime algo. Si detectas algún problema cuéntamelo y veremos si puedo resolverlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas