[ Batch ] Retrier un fichier txt

Résolu/Fermé
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 - 27 févr. 2009 à 00:06
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 - 28 févr. 2009 à 18:08
Bonjour,
J'ai déjà chercher un moyen pour classer les ligne d'un fichier texte.
Je m'explique.
Enfaite j'ai un fichier:

1.Patate
3.Poirot
4.Asperge 
5.Jambon

Mais comme vous voyer sa passe de la ligne 1. a 3.
Donc je voudrait que :
la ligne avec 3. passe a 2.
la ligne avec 4. passe a 3.
la ligne avec 5. passe a 4.

En faite que sa reclasse tout.
J'ai déjà chercher pendant 2h une solution en passant par plusieurs boucles en même temps.
Mais impossible.
Si quelqu'un a une idée je suis preneur.
Merci.
Bilou
A voir également:

9 réponses

dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
27 févr. 2009 à 09:17
hello
avec gawk version Windows de cet outil Unix : http://unxutils.sourceforge.net/

C:\>type f1.txt
1.Patate
3.Poirot
4.Asperge
5.Jambon
C:\>gawk -F"." " {print NR \".\" $2}" < f1.txt
1.Patate
2.Poirot
3.Asperge
4.Jambon
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
27 févr. 2009 à 15:58
Ouai mais je l'aurais voulue en batch si c'est possible.
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
27 févr. 2009 à 16:56
Bon au bout de 3h de recherche j'ai fini par trouver tout seul.
Voila le script:

@echo off
set nbr=0
setlocal enableDelayedExpansion
FOR /F "delims=1.,2.,3.,4.,5.,6.,7.,8.,9.,10." %%i in ('type text.txt') do (
set /a nbr=!nbr! + 1
echo !nbr!.%%i >> text.txt
)
setlocal disableDelayedExpansion

pause


Pour le "delims=1.,2.,3.,4.,5.,6.,7.,8.,9.,10." je sais c'est pas très propre mais vus que moi mon fichier s'arrête juste a 10.
Si pour vous non, je vous laisse trouver une solution tout seul ^^
Google est votre amis
Si sa peut aider quelqu'un.
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
28 févr. 2009 à 07:20
tu peux généraliser la boucle for comme ça:
for /F "tokens=2 delims=." %%i in (text.txt) 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
28 févr. 2009 à 16:01
Merci mais peut tu m'expliquer le rôle de :
- tokens=
- delims=
Merci.
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
28 févr. 2009 à 16:06
delims=. c'est le point qui est le séparateur de champ
token=2 on affiche que le deuxième champ, le premier étant le chiffre

tu trouves les détails dans l'aide Windws
delims=xxx Spécifie un jeu de séparateur. Celui-ci remplace le jeu de délimiteur par défaut constitué de l'espace et de la tabulation.
tokens=x,y,m-n Spécifie les jetons de chaque ligne qui doivent être passés au corps de la commande for pour chaque occurrence. Par conséquent, les noms de variables supplémentaires sont alloués. La forme m-n est une plage qui spécifie le mième au nième jetons. Si le dernier caractère de la chaîne tokens= est un astérisque (*), une variable supplémentaire est allouée pour recevoir le texte restant de la ligne après le dernier jeton analysé.
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
28 févr. 2009 à 17:27
OK merci j'avais déjà lu l'aide de windows mais sa ne m'avais pas aider.
Alors que avec tes explication j'ai tout compris.
Merci beaucoup car avant je faisais un peu au piff.
xD
Merci.
0
dubcek Messages postés 18757 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 19 décembre 2024 5 623
28 févr. 2009 à 17:31
ton truc avec setlocal enableDelayedExpansion et les ! dans set /a nbr=!nbr! + 1 est bon parce qu'on ne trouve rien dans l'aide Windows
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
28 févr. 2009 à 18:08
Ouai j'ai beaucoup galère a le trouver ^^.
0