Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R] Echo dans et en dehors de la boucle for
Auteur Message
Répondre en citant
Message [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



Dernière édition par stracoma le Mar 11 Sep 2018 - 09:59; édité 1 fois

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


Répondre en citant
Message [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)




______________________________________________________
MineBat

Keep programming
Répondre en citant
Message [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.
Hugo7, sans faire exprès... a écrit:
Il conviendra de [...] supprimer le panneau de la liste des panneaux présente dans une variable liste dans la liste des variables.
Visiter le site web du posteur
Répondre en citant
Message [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
Répondre en citant
Message [R] Echo dans et en dehors de la boucle for 
stracoma a écrit:
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




Dernière édition par Hackoo le Lun 10 Sep 2018 - 21:55; édité 1 fois

______________________________________________________
Mes Contributions en Téléchargement
Répondre en citant
Message [R] Echo dans et en dehors de la boucle for 
stracoma a écrit:
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 a écrit:
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.
Hugo7, sans faire exprès... a écrit:
Il conviendra de [...] supprimer le panneau de la liste des panneaux présente dans une variable liste dans la liste des variables.
Visiter le site web du posteur
Répondre en citant
Message [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
Message [R] Echo dans et en dehors de la boucle for 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch