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

  1. 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
    1. 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. 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. Nickel 

      merci beaucoup 

      1
      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
        0
      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
        0
      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.

        0