Problème boucle for

Résolu
Utilisateur anonyme -  
brucine Messages postés 24741 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour, j'ai un problème avec la boucle

for

voici mon programme :

for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do for /l %%b in (1,1,36) do (echo %%b=%%a >>test.txt)

lorsque je l'exécute j'obtiens 1=A 2=A 3=A ... puis 1=B 2=B 3=B... 1=C 2=C 3=C... 

il faudrait que je puisse obtenir  1=A 2=B 3=C...

Merci pour votre retour

3 réponses

  1. Utilisateur anonyme
     

    Merci sa marcher.

    Après il n'aurait pas une autre solution pour au lieu utiliser un chiffre mettre des valeur plus spécifique comme par exemple  A=coucou B=sa C=vas ...

    setlocal enabledelayedexpansion
    for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do for %%b in (coucou sa vas bien et toi ...) do (echo %%b=%%a>>test.txt)
    1
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      setlocal enabledelayedexpansion
      
      for %%a in (Acoucou Bsa Cvas Dbien Eet Ftoi) do (
          set "chaine=%%a"
          set "index=!chaine:~0,1!"
          set "mot=!chaine:~1!"
          echo !index!=!mot!
      )>test.txt
      1
  2. Utilisateur anonyme
     

    Nickel 

    merci beaucoup 

    1
    1. brucine Messages postés 24741 Date d'inscription   Statut Membre Dernière intervention   4 154
       

      Bonjour,

      Mais ce qui ne répond pas formellement à la question si on part de 2 jeux de données séparées; on peut alors comme suit transiter par des fichiers texte, à cela près que sauf à rajouter une condition supplémentaire sur le comptage des lignes, la dernière partie sera incohérente puisque les 2 jeux de données n'ont pas le même nombre d'entrées:

      @echo off
      
      FOR %%a IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) DO ECHO %%a>>Lett.txt
      SET Lett=Lett.txt
      FOR %%b IN (coucou sa vas bien et toi) DO ECHO %%b>>Mess.txt
      SET Mess=Mess.txt
      SET Result=Result.txt
      
      (
          FOR /F "delims=" %%a in (%Lett%) DO (
              setlocal enabledelayedexpansion
              SET /P line=
              ECHO %%a=!line!>>%Result%
              endlocal
          )
      )<%Mess%
      
      DEL Lett.txt
      DEL Mess.txt
      
      :EOF
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > brucine Messages postés 24741 Date d'inscription   Statut Membre Dernière intervention  
         

        Tu as raison ça ne répond pas formellement à la question, voilà une solution avec 2 jeux de données :

        @echo off
        
        set phrase=coucou sa vas bien et toi
        call :association A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9
        
        pause
        exit
        
        :association
        
        for %%A in (%phrase%) do (
        	call echo %%~1=%%A
        	shift
        )
        
        goto :eof
        0
      2. brucine Messages postés 24741 Date d'inscription   Statut Membre Dernière intervention   4 154 > barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Oui, le raisonnement est le même (la "difficulté" consiste à boucler une formule à l'intérieur d'une autre alors qu'il faut respecter "l'expansion des variables" pour les deux), et à cela près que, comme souvent, ta solution est plus élégante que la mienne.

        0
  3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     

    Bonjour,

    C'est normal que ça ne fonctionne pas, tes boucles sont imbriquées.

    Voilà une solution possible :
     

    setlocal enabledelayedexpansion
    
    set /a index=0
    
    for %%a in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9) do (
        set /a index+=1
        echo !index!=%%a
    )>test.txt


    0