Petit problème d'incrémentation

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
nlj94
Batcheur occasionnel
Messages : 3
Enregistré le : 08 sept. 2009 15:21

Petit problème d'incrémentation

Message par nlj94 »

Bonjour à tous.

Tout fraîchement téléporté dans l'administration windows, je dois effectuer quelques scripts (plus ou moins poussés).
J'ai donc décidé de venir vous embêter avec mes questions (en espérant à l'avenir pouvoir aider à mon tour).

Ma première énigme porte sur une petite boucle toute bête dont voici le code:

Code : Tout sélectionner

cls
@echo off

set /a var = 0
echo %var%
pause

:step1
if defined var (
 set /a var += 1
 echo %var%
 pause
 goto step1
)
 
Logiquement (ou pas), j'espère obtenir une incrémentation basique: 0,1,2 etc
Pourtant, j'obtiens 0,0,1,2
Qu'ai-je oublié me direz-vous? C'est bien là tout le problème: je n'arrive pas à situer mon erreur (de débutant je l'accepte).

D'avance merci pour vos réponses.
Julien
Molto bene!
Laddy
SuperBatcher
Messages : 190
Enregistré le : 04 juil. 2008 13:40

Re: Petit problème d'incrémentation

Message par Laddy »

Bonjour
c'est tout à fait logique d'obtenir ce résultat 0, 0,1,2,3...

Tu demandes d'afficher la variable %var% elle te donne sa valeur

puis avec cette valeur %var%=0 tu lui demandes d'incrémenter à chaque tour donc 0, 1, 2, 3, 4

si tu veux commencer à 1 il faut lui donner la valeur 1

Code : Tout sélectionner

@echo off

set /a var=1
:step1
if defined var (
set /a var= var + 1
echo %var%
goto step1
)
 
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
nlj94
Batcheur occasionnel
Messages : 3
Enregistré le : 08 sept. 2009 15:21

Re: Petit problème d'incrémentation

Message par nlj94 »

Bonjour et merci pour votre réponse très rapide!

je remet le code avec commentaires comme je le comprend, peut être pourrez vous me confirmer ma position entêtée ;-)

Code : Tout sélectionner

cls
@echo off

set /a var = 0
echo %var%
REM 0 est affiché c'est normal je suis d'accord
pause

:step1
if defined var (
rem var est définie précédemment avec la valeur 0 donc je rentre dans ma "boucle" infinie

 set /a var += 1
rem ou bien set /a var = var+1 (cela doit normalement incrémenter)

 echo %var%
rem je devrai avoir 1 mais j'obtiens 0, c'est la que je trouve que ca bloque non?)
rem c'est seulement au 2eme tour que j'ai 1

 pause
 goto step1
)
 
Molto bene!
Laddy
SuperBatcher
Messages : 190
Enregistré le : 04 juil. 2008 13:40

Re: Petit problème d'incrémentation

Message par Laddy »

C'est if defined var qui pose problème la syntaxe n'est pas juste

Code : Tout sélectionner

@echo off
set /a var=0

:step1

rem if defined variable commande
if defined var set /a var+=1
echo %var%
goto step1
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
nlj94
Batcheur occasionnel
Messages : 3
Enregistré le : 08 sept. 2009 15:21

Re: Petit problème d'incrémentation

Message par nlj94 »

Hoooo, en effet c'est nul de ma part d'avoir voulu mettre des parenthèses!!

Merci beaucoup Laddy!
Molto bene!
Répondre