Découper un fichier .txt en batch

Mael730 Messages postés 50 Statut Membre -  
cs-bilou Messages postés 836 Statut Membre -
Bonjour,

Je suis novice en batch et je bloque sur un problème: j'ai un fichier .txt contenant un nombre quelconque de lignes (par exemple 135000) et j'aimerai spliter ce fichier en x fichiers portant le même nom +/- un chiffre (pour les différencier) contenant chacun 40 000 lignes.
Est-ce faisable en batch??

Merci d'avance

Cdlt
Configuration: Windows XP
Firefox 3.5.7

3 réponses

  1. cs-bilou Messages postés 836 Statut Membre 164
     
    Tien voilà tu peut faire un truc comme ça:
    @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


    Le fichier In.txt est le fichier d'entré donc le fichier que tu veux découper.
    La variable nbrLigneMax c'est le nombre de ligne que tu veux par fichier.

    Bilou
    3
  2. cs-bilou Messages postés 836 Statut Membre 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.
    1
  3. Mael730 Messages postés 50 Statut Membre 1
     
    Merci ça fonctionne nikel!
    J'ai une autre question:
    Il faudrait que le batch me recopie l'en-tête contenue dans le fichier In.txt dans tout les fichiers File-* générés.

    P.S:Cette en-tête fait 14 lignes

    Merci d'avance
    0