La condition du IF ne s'applique pas
Résolu
Jean-Elie
-
Utilisateur anonyme -
Utilisateur anonyme -
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!
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!
A voir également:
- La condition du IF ne s'applique pas
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Appliquez à tous les paragraphes du document à télécharger, à l’exception des titres et des sous-titres, la mise en forme suivante : chaque paragraphe doit être espacé de 0,42 cm ou 12 pt du paragraphe qui suit les textes ne doivent pas être en retrait à droite et à gauche après ces modifications, sur quelle page se trouve le titre « la cheminée » dans le chapitre « informations diverses » ? - Guide
- Tensiomètre bout du doigt application gratuite - Télécharger - Vie quotidienne
- Lanceur d'application ne répond pas xiaomi - Forum Xiaomi
2 réponses
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.
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.
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
https://forums.commentcamarche.net/forum/affich-26231640-batch-la-condition-du-if-ne-s-applique-pas#p26232528