Problème avec goto :eof

Résolu
Bonjour,

j'ai un problème dans un programme batch quand j'utilise
call :temps affichage
sa marche mais lorsque j'utilise
goto :temps affichage
sa ne me remet pas au menu. si en enlève le
goto :eof
alors le
call
ne revient plus et donc n'effectue pas le
reset



@echo

if not defined a set a=0

:reset
code -------------------------------
code -------------------------------
code -------------------------------
timeout /t %a% /nobreak>nul

:menu
set /p choix= 1/config 2/temps affichage
if /I "%choix%"=="1" goto :config
if /I "%choix%"=="2" goto :temps affichage

:config
set /p choix=Quelle variable voulez vous changer ? :
if /I "%choix%"=="1" goto :autre
if /I "%choix%"=="2" call :temps affichage
goto :reset

:temps affichage
set /p ab=le temps d'affichage
goto :eof
goto :menu

4 réponses

  1. ok merci,
    c'est vrai sur les commandes
    call
    et
    for
    je les maîtrises pas encore tout ta fait
    1. merci ça marcher.
      ça signifie quoi le
      %~1
      car je sais que
      %0
      signifie entre guillemet le chemin ainsi que le nom du programme actuelle.
      1. %1 désigne le premier paramètre, dans ton cas le premier paramètre vaut : affichage

        J'ai l'impression que tu ne maîtrises pas trop la commande CALL
    2. rebonjour,
      je souhaite garder le
      goto :temps affichage
      de
      :menu
      set /p choix= 1/config 2/temps affichage
      if /I "%choix%"=="1" goto :config
      if /I "%choix%"=="2" goto :temps affichage

      et le
      call :temps
      de
      :config
      set /p choix=Quelle variable voulez vous changer ? :
      if /I "%choix%"=="1" goto :autre
      if /I "%choix%"=="2" call :temps affichage
      goto :reset

      En faite c'est la fin qui pose problème
      :temps
      set /p ab=le temps d'affichage
      goto :eof
      goto :menu
      car avec le
      call
      il marche parfaitement mais lorsque j'utilise le
      goto
      ça me fait quitté le programme. Or il faudrait modifié la fin pour qu'il puisse changer la destination de l'étiquette lorsque on utilises
      call
      ou
      goto
      par exemple genre un truc comme ça
      if EXIST call :temps affichage goto :eof else (goto :menu)
      ou commande qui permet de savoir si
      call
      est utiliser en ce moment dans cet étiquette
      :temps affichage
      pour qu'il puisse basculer directement sur
      goto :menu
      si
      call :temps affichage
      n'est pas utiliser en ce moment.
      1. Je pense que ça devrait le faire :
        :temps affichage
        set /p ab=le temps d'affichage
        if not "%~1"=="" (goto :eof) else (goto :menu)
    3. Bonjour,

      Essaie comme ceci :

      @echo
      
      if not defined a set a=0
      
      :reset
      code -------------------------------
      code -------------------------------
      code -------------------------------
      timeout /t %a% /nobreak>nul
      
      :menu
      set /p choix= 1/config  2/temps affichage
      if /I "%choix%"=="1" goto :config
      if /I "%choix%"=="2" call :temps
      goto :menu
      
      :config
      set /p choix=Quelle variable voulez-vous changer ? : 
      if /I "%choix%"=="1" goto :autre
      if /I "%choix%"=="2" call :temps
      goto :reset
      
      :temps
      set /p ab=le temps d'affichage
      goto :eof