Problème boucle for

Résolu/Fermé
azerty_9138 Messages postés 54 Date d'inscription dimanche 17 novembre 2019 Statut Membre Dernière intervention 17 janvier 2023 - 13 juil. 2022 à 12:40
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 - 14 juil. 2022 à 23:39

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

A voir également:

3 réponses

azerty_9138 Messages postés 54 Date d'inscription dimanche 17 novembre 2019 Statut Membre Dernière intervention 17 janvier 2023 11
13 juil. 2022 à 16:38

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
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 13 juil. 2022 à 17:10
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
azerty_9138 Messages postés 54 Date d'inscription dimanche 17 novembre 2019 Statut Membre Dernière intervention 17 janvier 2023 11
14 juil. 2022 à 11:38

Nickel 

merci beaucoup 

1
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 814
14 juil. 2022 à 12:47

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
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908 > brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024
Modifié le 14 juil. 2022 à 22:13

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
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 814 > barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024
14 juil. 2022 à 23:39

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
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 13 juil. 2022 à 13:31

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