Batch Forum Index
RegisterSearchFAQMemberlistUsergroupsLog in
Reply to topic Page 1 of 1
[R] Echo dans et en dehors de la boucle for
Author Message
Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
bonsoir les amis
je demande votre aide pour comprendre ceci:
Code:
@echo off
   set nombre=0
   for /L %%x in (0;10;100) do (
   echo la variable x vaut %%x
   set /a nombre = nombre +10
   
   )
   echo nombre vaut %nombre%
   pause

résultat:
Code:
la variable x vaut 0
la variable x vaut 10
la variable x vaut 20
la variable x vaut 30
la variable x vaut 40
la variable x vaut 50
la variable x vaut 60
la variable x vaut 70
la variable x vaut 80
la variable x vaut 90
la variable x vaut 100
nombre vaut 110
Appuyez sur une touche pour continuer...

Quand je place "echo nombre vaut %nombre%" à l'intérieur de la boucle for, nombre vaut toujours 0:
Code:
@echo off
   set nombre=0
   for /L %%x in (0;10;100) do (
   echo la variable x vaut %%x
   set /a nombre = nombre +10
   echo nombre vaut %nombre%
   )
   
   pause

résultat
Code:
la variable x vaut 0
nombre vaut 0
la variable x vaut 10
nombre vaut 0
la variable x vaut 20
nombre vaut 0
la variable x vaut 30
nombre vaut 0
la variable x vaut 40
nombre vaut 0
la variable x vaut 50
nombre vaut 0
la variable x vaut 60
nombre vaut 0
la variable x vaut 70
nombre vaut 0
la variable x vaut 80
nombre vaut 0
la variable x vaut 90
nombre vaut 0
la variable x vaut 100
nombre vaut 0
Appuyez sur une touche pour continuer...

je ne comprends pas pourquoi?
Merci



Last edited by stracoma on Tue 11 Sep 2018 - 09:59; edited 1 time in total

______________________________________________________
Un nul qui veut apprendre
Post Publicité 
PublicitéSupprimer les publicités ?


Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
Salut, essaye comme ça :
Code:

@echo off
setlocal EnableDelayedExpansion
set /a nombre=0

for /L %%x in (0;10;100) do (
    echo La variable x vaut %%x
    set /a nombre += 10
)

echo Nombre vaut %nombre%
pause


Modifications :
- Tu avais oublié le "setlocal EnableDelayedExpansion", ce qui permet de faire ce que tu voulais Very Happy
- Le "/a" dans la déclaration de la variable nombre n'est pas obligatoire mais est plus propre, on comprend mieux que la variable nombre est un nombre (Bien que ici, ce soit explicite, si elle s'était appelée par exemple "a" ça aurait eu tout de suite plus d'intérêt)




______________________________________________________
Chainsaw.exe
Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
Salut,
plus d'informations sur la façon dont on doit utiliser les variables "classiques" (càd. autres que %%A) avec for, sur ce tutoriel http://batch.xoo.it/t5183-Les-variables-dans-FOR.htm
On utilisera soit la méthode du setlocal en utilisant echo !nombre! au lieu de echo %nombre% à l'intérieur du for, soit un call vers une fonction extérieure au for. Tout ça est expliqué, avec exemple sur le tuto.




______________________________________________________
Cordialement,
Hugo, passionné de programmation, de géologie, de construction et d'aviation civile.


décomposer une variable avec for : http://batch.xoo.it/t4285.htm
les substitutions de références de variables : http://batch.xoo.it/t4314.htm
for /L : http://batch.xoo.it/t4480.htm
variables dans for : http://batch.xoo.it/t5183.htm
fichiers de sauvegardes : http://batch.xoo.it/t5723.htm



.
Visit poster’s website
Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
Bonjour tout le monde
Pour IronBatcher, ton code ne répond pas à ma question. ce code, je l'ai fait sans 'setlocal EnableDelayedExpansion' et ça marche. Par contre 'echo Nombre vaut %nombre% ' à l'intérieur de la boucle for, même avec 'setlocal EnableDelayedExpansion' ça ne marche pas
Pour Hugo7, je vais explorer le lien




______________________________________________________
Un nul qui veut apprendre
Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
stracoma wrote:
Bonjour tout le monde
Pour IronBatcher, ton code ne répond pas à ma question. ce code, je l'ai fait sans 'setlocal EnableDelayedExpansion' et ça marche. Par contre 'echo Nombre vaut %nombre% ' à l'intérieur de la boucle for, même avec 'setlocal EnableDelayedExpansion' ça ne marche pas
Pour Hugo7, je vais explorer le lien

salut Wink
Code:
@echo off
set /a nombre=0
REM Ici on active l'expansion retardé avant la boucle for
setlocal EnableDelayedExpansion
for /L %%x in (0;10;100) do (
    set /a nombre+= 10
Rem a l'interieur de la boucle for tu remplaces % par !
   echo Nombre vaut !nombre!
)
REM Fin le la boucle for
echo(
echo ici on arrive a la fin de la boucle avant le EndLocal
echo Nombre %%nombre%% vaut %nombre%
EndLocal

echo(
echo Regarder maintenant ce qui va passer a la variable nombre apres le Endlocal
echo Nombre vaut %nombre%
pause




Last edited by Hackoo on Mon 10 Sep 2018 - 21:55; edited 1 time in total

______________________________________________________
Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
stracoma wrote:
Par contre 'echo Nombre vaut %nombre% ' à l'intérieur de la boucle for, même avec 'setlocal EnableDelayedExpansion' ça ne marche pas

Dans mon tuto tu découvriras que t'y étais presque Okay
Tu mets le 'setlocal EnableDelayedExpansion' au début de ton code, ensuite tu mets ton 'echo Nombre vaut %nombre%' dans ta boucle for, mais en prenant soin de remplacer les % par des ! comme je l'ai expliqué et mis en gras Wink
Hugo7 wrote:
en utilisant echo !nombre! au lieu de echo %nombre% à l'intérieur du for





______________________________________________________
Cordialement,
Hugo, passionné de programmation, de géologie, de construction et d'aviation civile.


décomposer une variable avec for : http://batch.xoo.it/t4285.htm
les substitutions de références de variables : http://batch.xoo.it/t4314.htm
for /L : http://batch.xoo.it/t4480.htm
variables dans for : http://batch.xoo.it/t5183.htm
fichiers de sauvegardes : http://batch.xoo.it/t5723.htm



.
Visit poster’s website
Reply with quote
Post [R] Echo dans et en dehors de la boucle for 
Bonsoir
merci beaucoup à vous tous. Effectivement ce code marche:
Code:
@echo off

setlocal EnableDelayedExpansion
set/a nombre=0

for /L %%x in (0;10;100) do (
    echo La variable x vaut %%x
    echo Nombre vaut !nombre!
   set /a nombre += 10
)
pause

je marquerai le sujet résolu. Mais c'est la première fois que je vois: 'setlocal EnableDelayedExpansion', j'espère trouver l'explication dans le tuto de Hugo 7 'Utiliser des variables dans FOR' que je viens de commencer
Salut




______________________________________________________
Un nul qui veut apprendre
Post [R] Echo dans et en dehors de la boucle for 


Display posts from previous:
Reply to topic Page 1 of 1
  



Index | Getting a forum | Free support forum | Free forums directory | Report a violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch