[ Batch ] Retrier un fichier txt

Résolu
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

--
Il y a des jours faut pas m'chercher.
Et y'a des jours tous les jours !
Configuration: Windows XP
Firefox 3.0.6

9 réponses

  1. Contributeur
    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
    1. Ouai mais je l'aurais voulue en batch si c'est possible.
      0
      1. 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
        1. Contributeur
          tu peux généraliser la boucle for comme ça:
          for /F "tokens=2 delims=." %%i in (text.txt) 
          0
          1. Merci mais peut tu m'expliquer le rôle de :
            - tokens=
            - delims=
            Merci.
            0
            1. Contributeur
              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
              1. 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
                1. Contributeur
                  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
                  1. Ouai j'ai beaucoup galère a le trouver ^^.
                    0

                    Discussions similaires

                    question pix mot caché

                    7 réponses