Découper un fichier en plusieurs partie
Résolu
Ka-El
Messages postés
260
Date d'inscription
Statut
Membre
Dernière intervention
-
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Ka-El Messages postés 260 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Après avoir poser la même problématique côté shell (qui a obtenu une réponse brillante de dubcek), je me vois confronté à la même interrogation côté batch.
Il s'agit donc de découper le fichier.txt suivant:
Comme vous pouvez le constater, ce fichier est constitué des balises suivantes:
#?COMMENCEMENT
#?FIN
Mon but est de découper le fichier autant de fois qu'il y a de balises afin d'obtenir plusieurs fichier.nn.txt (nn = numéro de fichier) avec le contenu suivant:
J'arrive pour l'instant à faire le travail en m'appuyant sur le nombre de lignes:
ça marche très bien, sauf qu'il me semble plus prudent de m'appuyer sur les balises pour faire le découpage.
Auriez-vous une idée comment faire cette opération ?
Merci à vous ! :-)
Ka-El
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
.
Après avoir poser la même problématique côté shell (qui a obtenu une réponse brillante de dubcek), je me vois confronté à la même interrogation côté batch.
Il s'agit donc de découper le fichier.txt suivant:
#?COMMENCEMENT s_prenom='ALBERT' s_nom='DUPOND' s_sexe='masculin' s_aptitude='' s_definition='Habitant de France' s_groupe='HOMME' s_pseudo='' s_langue='' s_etranger='N' s_address='11.rue.Temple/7700' s_unformation='' s-profession='sans' #?FIN #?COMMENCEMENT s_prenom='FRED' s_nom='BACHELARD' s_sexe='masculin' s_aptitude='' s_definition='Habitant de France' s_groupe='HOMME' s_pseudo='' s_langue='' s_etranger='N' s_address='25.rue.Baltot/78114' s_unformation='' s-profession='sans' #?FIN etc...
Comme vous pouvez le constater, ce fichier est constitué des balises suivantes:
#?COMMENCEMENT
#?FIN
Mon but est de découper le fichier autant de fois qu'il y a de balises afin d'obtenir plusieurs fichier.nn.txt (nn = numéro de fichier) avec le contenu suivant:
#?COMMENCEMENT s_prenom='ALBERT' s_nom='DUPOND' s_sexe='masculin' s_aptitude='' s_definition='Habitant de France' s_groupe='HOMME' s_pseudo='' s_langue='' s_etranger='N' s_address='11.rue.Temple/7700' s_unformation='' s-profession='sans' #?FIN
J'arrive pour l'instant à faire le travail en m'appuyant sur le nombre de lignes:
set "nLines=14" set "line=0" for /f "usebackq delims=" %%c in ("fichier.txt") do ( set /a "file=line/%nLines%", "line+=1" for %%b in (!file!) do (>>"resultat_%%b.txt" echo.%%c) )
ça marche très bien, sauf qu'il me semble plus prudent de m'appuyer sur les balises pour faire le découpage.
Auriez-vous une idée comment faire cette opération ?
Merci à vous ! :-)
Ka-El
**Modifié par la modération pour une lecture plus facile du code, à l'avenir utilisez les balises, VOIR CETTE PAGE
.
A voir également:
- Découper un fichier en plusieurs partie
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
hello
est-il envisageable d'utiliser awk pour DOS ?
http://gnuwin32.sourceforge.net/packages/gawk.htm
est-il envisageable d'utiliser awk pour DOS ?
http://gnuwin32.sourceforge.net/packages/gawk.htm
essayer
@echo off set c=1001 set s="FIN" setlocal enabledelayedexpansion for /f "delims=" %%a In (fichier.txt) Do ( set n=fichier.!c:~-2!.txt echo %%a>> !n! echo %%a | findstr %s% > NUL if !errorlevel! EQU 0 (set /a c=!c!+1) )
Salut dubcek,
ça marche plutôt pas mal.
En revanche, je ne sais pas si j'ai bien fait, mais j'ai ajouté un timeout suite au script car il met un certain temps à se dérouler entièrement :
je pose la question, car durant le processus, j'ai ces messages qui se sont affichés dans ma fenêtre dos:
C'est étrange, car le script semble donner le résultat attendu.
Quelle pourrait être la raison de cet affichage ?
Ka-El
ça marche plutôt pas mal.
En revanche, je ne sais pas si j'ai bien fait, mais j'ai ajouté un timeout suite au script car il met un certain temps à se dérouler entièrement :
timeout/t 15 /nobreak >nul
je pose la question, car durant le processus, j'ai ces messages qui se sont affichés dans ma fenêtre dos:
. was unexpected at this time.
' was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
' was unexpected at this time.
' was unexpected at this time.
' was unexpected at this time.
' was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
' was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
. was unexpected at this time.
.bat' was unexpected at this time.
' was unexpected at this time.
. was unexpected at this time.
' was unexpected at this time.
' was unexpected at this time.
C'est étrange, car le script semble donner le résultat attendu.
Quelle pourrait être la raison de cet affichage ?
Ka-El
DOS c'est lent
montre le code
afficher la ligne en cours : (j'ai pas testé)
montre le code
afficher la ligne en cours : (j'ai pas testé)
if !errorlevel! EQU 0 (set /a c=!c!+1&set /A x=!c!-1000&echo !x!)