Page 1 sur 1

goto %label% ?

Posté : 02 juil. 2010 23:32
par Sage Pourpre
En examen, j'ai eu à créer un menu tout simple.
Le voici :

Code : Tout sélectionner

@echo off
title Mon menu
:menu
cls
echo.
echo 1 - Afficher des "1"
echo 2 - Afficher des "2"
echo q - Quitter 
set /p ii=

if %ii%==1 goto %ii%
if %ii%==2 goto %ii%
if /I %ii%==q goto %ii%



:1
cls
echo 1111111
pause
goto menu
:2
cls
echo 222222
pause
goto menu
:q
cls
echo bye
pause > nul
 

Mon professeur m'a fait échouer prétextant que l'utilisation de goto %ii% plutôt qu'une étiquette pouvait
générer des erreurs.

J'aurais aimé savoir si son argument tient la route étant donné que ce menu fonctionne très bien.


Sachant que Set /p ii= stocke l'entrée de l'utilisateur en tant que chaîne de caractère (string, pour les intimes) et que
goto nous envoie à l'étiquette correspondante à la chaîne de caractère suivant la commande, quelles peuvent bien être
les erreurs "possibles" de la méthode que j'ai utilisé ?

Une idée ?

Je pensais à contester mes résultats mais j'aimerais être certain avant que ma méthode n'est pas erronée.

Tout ce que j'ai eu comme réponse c'est que ça peut générer des erreurs, sans plus d'explications de sa part.
Je cherche à comprendre ...

Code : Tout sélectionner

if %ii%==1 goto %ii% 
ou

Code : Tout sélectionner

if %ii%==1 goto 1
Sachant, me fiant à l'aide de ms-dos, que %ii% est stockée en tant que chaîne de caractère et que goto
prend comme paramètre une chaîne de caractère, je ne vois vraiment pas ou pourrait être le problème.

Re: goto %label% ?

Posté : 05 juil. 2010 08:18
par Laddy
Bonjour
hmm je ne vois pas comment casser l'argument de ton prof.

Par convention on ne met pas de variable dans la redirection de label (goto)
Par erreur je pense qu'il veut dire que ça peut générer un conflit ou une erreur si ta variable se perd dans le batch (rétention)

Je ne vois pas trop quoi te dire hormis que oui on aurait plus l'habitude on écrit :

goto 1 et non goto %ii%

essaie de voir sur ce forum voir ce qu'il en pense : http://www.developpez.net/forums/f519/g ... pts-batch/

Bon courage

Re: goto %label% ?

Posté : 11 août 2010 21:14
par Tanguy100
Pareil, mais je pense que tu peux quand même enlever les "if", car ils ne servent à rien, et mettre "goto %ii%" en une seul ligne à la place des trois lignes, car cela raccourcira le code.

Re: goto %label% ?

Posté : 18 août 2010 18:07
par Dodoche28
Bonjours tous le monde,
si ton sujet est encore d'actualité, je te propose de remodeler ton programme en plus simplifier: :)

Code : Tout sélectionner

@echo off
title Mon menu
:menu
cls
echo.
echo 1 - Afficher des "1"
echo 2 - Afficher des "2"
echo q - Quitter
set /p ii=

if "%ii%"=="1" goto 1
if "%ii%"=="2" goto 2
goto q::

:1
cls
echo 1111111
pause
goto menu

:2
cls
echo 222222
pause
goto menu

:q
cls
echo bye
pause > nul
 

Re: goto %label% ?

Posté : 18 août 2010 18:14
par Dodoche28
Pardon faute de frappe...
Au lieu de "goto q::" c'est "goto q" bien entendu ^^

Le code que j'ai remodelé est un peu plus stable ^^ si il y a une erreur il va à ":q"
Le code que tu as créer est bon mais j'ai personnellement trouver qu'il étais un peu farfelut pour un code de cette taille :P

Re: goto %label% ?

Posté : 24 août 2010 18:49
par DarkBatcher
Tanguy100 a écrit :Pareil, mais je pense que tu peux quand même enlever les "if", car ils ne servent à rien, et mettre "goto %ii%" en une seul ligne à la place des trois lignes, car cela raccourcira le code.
Eu non tanguy je ne pense pas que ce soit une bonne idée pour une raison toute simple : si l'utilisateur entre autre chose que ce qui est proposé l'étiquette ne sera pas trouvée
Par le batch