Découper un fichier .txt en batch

[Fermé]
Signaler
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
769
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
24 février 2011
-
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

3 réponses

Messages postés
769
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
24 février 2011
166
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
769
Date d'inscription
dimanche 2 décembre 2007
Statut
Membre
Dernière intervention
24 février 2011
166
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.
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
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