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. 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


    1. 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)
    2. 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
    3. ok merci,
      c'est vrai sur les commandes
      call
      et
      for
      je les maîtrises pas encore tout ta fait