Problème avec goto :eof

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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


    0
  2. Utilisateur anonyme
     
    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.
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      Je pense que ça devrait le faire :
      :temps affichage
      set /p ab=le temps d'affichage
      if not "%~1"=="" (goto :eof) else (goto :menu)
      0
  3. Utilisateur anonyme
     
    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.
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      %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
      0
  4. Utilisateur anonyme
     
    ok merci,
    c'est vrai sur les commandes
    call
    et
    for
    je les maîtrises pas encore tout ta fait
    0