BATCH:La condition du IF ne s'applique pas [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
11 octobre 2012
-
Messages postés
18231
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
-
Bonjour,

Tout d'abord, désolé pour le doublon de POST mais je voulais préciser dans le titre qu'il s'agit de BATCH et entre temps je suis devenu membre...

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!


3 réponses

Messages postés
18231
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
5 044
hello
essayer avec
@echo on  
setlocal enableDelayedExpansion 
rem Initialisation des varaiables 
...
et des ! à la place des % dans une boucle FOR
for %%A in ( 1 2 ) do (  
rem Lancement calcul valeur test  
If /i !test! LEQ !R! set petit="vrai"  
echo !petit!
...
Messages postés
9
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
11 octobre 2012

Parfait ça fonctionne!
Je te remercie!
Messages postés
18231
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 octobre 2020
5 044
good
clique résolu au dessus du premier message