La condition du IF ne s'applique pas

Résolu/Fermé
Jean-Elie - 10 oct. 2012 à 11:39
sebooch Messages postés 563 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 4 janvier 2014 - 10 oct. 2012 à 15:31
Bonjour,

Je cherche à faire converger une variable vers une valeur en me basant sur un test. Ici le test est simplement "inférieur à R?". Ici la boucle for comprend 2 itérations pour le débogage mais à terme il y en aura 20.
.
Voici le programme:
.
@echo on
rem Initialisation des varaiables
set /A R=102 rem valeur recherchée
set /A test=10
set /A Prec=10
set /A incre=1000
set /A test1=0
set /A delta=1000
set petit="faux"
pause
rem boucle pour convergence
for %%A in ( 1 2 ) do (
rem Lancement calcul valeur test
If /i %test% LEQ %R% set petit="vrai"
echo %petit%
If /i %petit%=="vrai" set test1 = %test%
echo %test1%

If /i %petit%=="faux" set /A incre = %incre%/10
echo %incre%

set /A test = %test1% + %incre%
echo %test%
set /A delta = %test% - %test1%
echo %delta%
rem if %delta% LEQ %Prec% ( echo "solution trouvée %test%" )

set petit="faux"
pause
)
pause
.
Lorsqu'on le lance on aperçoit que les conditions des IFs ne s'appliquent jamais.
.
Avec les variables test=10 et R=102:
If /i %test% LEQ %R% set petit="vrai"
echo %petit%
devrait être vrai or la fonction "echo" nous montre que la valeur reste inchangée
.
Et aussi
If /i %petit%=="faux" set /A incre = %incre%/10
echo %incre%
Vu que la première condition ne s'est pas exécuté on obtient "faux"=="faux" or la variable est toujours égale à 1000 et non à 100.
.
.
J'imagine que c'est une erreur de syntaxe sur le IF car les fonctions soumises à condition fonctionnent si elles sont lancées séparément.
.
J'espère que quelqu'un pourra m'aider sur mon problème, Merci d'avance!


2 réponses

sebooch Messages postés 563 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 4 janvier 2014 22
Modifié par sebooch le 10/10/2012 à 13:23
Salut

En testant, il y a un soucis sur la boucle FOR.
Quand on l'enlève, "petit" passe bien à "vrai". Par contre, "test1" ne passe pas à 10.
0
JEC_noob Messages postés 9 Date d'inscription mercredi 10 octobre 2012 Statut Membre Dernière intervention 11 octobre 2012
10 oct. 2012 à 14:48
Merci, désolé mais j'avais dupliquer le post. Le problème venait bien du FOR et voici la façon de contourner le problème:
https://forums.commentcamarche.net/forum/affich-26231640-batch-la-condition-du-if-ne-s-applique-pas#p26232528
0
sebooch Messages postés 563 Date d'inscription dimanche 25 avril 2010 Statut Membre Dernière intervention 4 janvier 2014 22
10 oct. 2012 à 15:31
Ok pas de soucis.

Passe le post en résolu. Bonne continuation.
0