Problème boucle for

Résolu

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

  • Votes
  • Date
  • Date décroissante
  1. Nickel 

    merci beaucoup 

    1. 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
    2. @brucine

      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
    3. @barnabe0057

      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.

  2. 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. 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
  3. 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