Dividir un archivo .txt por lotes

Mael730 Mensajes publicados 50 Estado Miembro -  
cs-bilou Mensajes publicados 836 Estado Miembro -
Hola,

Soy novato en batch y estoy atascado en un problema: tengo un archivo .txt que contiene un número arbitrario de líneas (por ejemplo, 135000) y me gustaría dividir este archivo en x archivos que tengan el mismo nombre +/- un número (para diferenciarlos) conteniendo cada uno 40,000 líneas.
¿Es factible hacerlo en batch?

Gracias de antemano

Saludos
Configuración: Windows XP Firefox 3.5.7

3 respuestas

  1. cs-bilou Mensajes publicados 836 Estado Miembro 164
     
    Aquí tienes la traducción:
    @echo off setlocal enableDelayedExpansion set nbrLigneMax=4 Set nbrLigne=0 set nbrFile=0 for /f "delims=""" %%i in ('type "In.txt"') do ( if !nbrLigne!==%nbrLigneMax% set /a nbrFile=!nbrFile!+1& set nbrLigne=0 echo %%i>>File-!nbrFile!.txt set /a nbrLigne=!nbrLigne!+1 ) pause


    El archivo In.txt es el archivo de entrada, es decir, el archivo que deseas dividir.
    La variable nbrLigneMax es el número de líneas que deseas por archivo.

    Bilou
    --
    Hay días en los que no debes buscarme.
    ¡Y hay días todos los días!
    3
  2. cs-bilou Mensajes publicados 836 Estado Miembro 164
     
    Et voilà :
    @echo off setlocal enableDelayedExpansion set nbrLigneEnteteMax=14 set nbrLigneEntete=0 for /f "delims=" %%i in ('type "In.txt"') do ( if !nbrLigneEntete! LSS %nbrLigneEnteteMax% echo %%i>>"EnTete.txt" set /a nbrLigneEntete+=1 ) set nbrLigneMax=4 Set nbrLigne=4 set nbrFile=0 for /f "delims=" %%i in ('type "In.txt"') do ( if !nbrLigne!==%nbrLigneMax% ( set /a nbrFile+=1 set nbrLigne=0 for /f "delims=" %%j in ('type "EnTete.txt"') do echo %%j>>"File-!nbrFile!.txt") echo %%i>>"File-!nbrFile!.txt" set /a nbrLigne+=1 ) del /f /s /q "EnTete.txt" > NUL pause


    Bilou.
    --
    Hay días que no hay que buscarme.
    ¡Y hay días todos los días!
    1
  3. Mael730 Mensajes publicados 50 Estado Miembro 1
     
    Gracias, funciona perfecto!
    Tengo otra pregunta:
    Necesitaría que el batch copie el encabezado contenido en el archivo In.txt en todos los archivos File-* generados.

    P.D.: Este encabezado tiene 14 líneas.

    Gracias de antemano.
    0