Problème de "goto" en batch...

Problème de "goto" en batch... - Shell/Batch - Programmation

Marsh Posté le 14-11-2010 à 13:20:11    

  :hello:  !! Je reviens pour la deuxième fois, mais cette fois-ci c'est pour un problème en Batch. J'ai fait un script qui demande à l'utilisateur de rentrer un mot de passe. Si le mot de passe est incorrect, le programme lui redemande de le rentrer, jusqu'à ce que le code soit correct.... Voici le script :
 
 
 
@echo off
title Transferts bancaires
color a
echo.
echo Entrez le code secret de votre compte bancaire :
echo.
set /p code=
echo.
if "%code%"=="martin" (
:2
echo Code bon, pour lancer le transfert, appuyez sur une touche.
echo.
pause
dir /S
echo.
pause
) else if "%code%" NEQ martin (
goto :1
:1
echo.
echo Code non correct, essayez a nouveau :
echo.
echo.
set /p code=
echo.
if "%code%"=="martin" (
goto :2
) else goto :1
echo.
pause
 
  J'ai modélisé avec un faux transfert bancaire (pas du tout réaliste  :D ). Mon problème viens du fait que si je rentre le bon code, la commande dir /s s’exécute correctement, mais après, quand j'appuie sur une touche, il me dit que le code n'est pas bon, bref, je crois que c'est une boucle infinie...  :pt1cable:  
 
  Pouvez-vous m'aider s'il vous plaît, remarque, je viens de penser à un truc, peut être que si je mets un ":fin" et que je redirige mon programme après le dir /s vers cette ":fin" le programme se stoppera ?? Enfin, je test, mais merci d'avance pour votre aide si précieuse.
 
  Bonne journée à toutes e à tous ! :)


---------------
Hacker n'est pas du vol,
Reply

Marsh Posté le 14-11-2010 à 13:20:11   

Reply

Marsh Posté le 15-11-2010 à 08:44:29    

Salut,
 
Tu as un deuxième test "if %code%" == "martin" après ton else if, du coup, si le code est correct, il lit la ligne goto :2, et va donc dans ton premier "if" et re-exécute la commande dir /S, d'où la boucle infinie ...
 
Pour ton else if, pourquoi tu fait :  
goto :1
:1
Le goto :1 est inutile ?
 
Peut être que tu veux qqch comme ça :
 

Code :
  1. @echo off
  2. title Transferts bancaires
  3. color a
  4. :debut
  5. echo.
  6. echo Entrez le code secret de votre compte bancaire :
  7. echo.
  8. set /p code=
  9. echo.
  10. if "%code%"=="martin" (
  11. echo Code bon, pour lancer le transfert, appuyez sur une touche.
  12. echo.
  13. pause
  14. dir /S
  15. echo.
  16. pause
  17. ) else (
  18. echo.
  19. echo Code non correct, essayez a nouveau :
  20. echo.
  21. echo.
  22. goto :debut
  23. )


---------------
:o
Reply

Marsh Posté le 15-11-2010 à 12:03:17    

Salut,
Il manque une parenthèse fermante également (celle du if (...NEQ martin))...


---------------
Seul Google le sait...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed