BATCH:La condition du IF ne s'applique pas

Résolu/Fermé
JEC_noob Messages postés 9 Date d'inscription mercredi 10 octobre 2012 Statut Membre Dernière intervention 11 octobre 2012 - 10 oct. 2012 à 11:53
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 10 oct. 2012 à 14:21
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

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 10/10/2012 à 12:45
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!
...
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:19
Parfait ça fonctionne!
Je te remercie!
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 10/10/2012 à 14:22
good
clique résolu au dessus du premier message
0