goto %label% ?

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Sage Pourpre
Batcheur occasionnel
Messages : 1
Enregistré le : 02 juil. 2010 23:17

goto %label% ?

Message 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.
Laddy
SuperBatcher
Messages : 190
Enregistré le : 04 juil. 2008 13:40

Re: goto %label% ?

Message 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
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
Tanguy100
Batcheur débutant
Messages : 13
Enregistré le : 28 juin 2010 14:08

Re: goto %label% ?

Message 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.
Avatar du membre
Dodoche28
King Of Batch
Messages : 84
Enregistré le : 18 août 2010 17:07
Contact :

Re: goto %label% ?

Message 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
 
N'oublier pas de mettre [Résolu]. Le procéder est mis dans une annonce!
Avatar du membre
Dodoche28
King Of Batch
Messages : 84
Enregistré le : 18 août 2010 17:07
Contact :

Re: goto %label% ?

Message 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
N'oublier pas de mettre [Résolu]. Le procéder est mis dans une annonce!
DarkBatcher
King Of Batch
Messages : 66
Enregistré le : 06 juil. 2010 17:37
Contact :

Re: goto %label% ?

Message 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
Ce forum vous à aidé? Faites le vivre en vous connectant régulièrement et en répondant au questions posées sur le forum si vous avez une solution
Répondre