Problème avec goto :eof

Résolu/Fermé
Utilisateur anonyme - Modifié le 2 mai 2021 à 11:41
 Utilisateur anonyme - 5 mai 2021 à 21:58
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

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 919
Modifié le 2 mai 2021 à 23:34
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
Utilisateur anonyme
Modifié le 4 mai 2021 à 21:20
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
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 919
5 mai 2021 à 10:38
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
Utilisateur anonyme
5 mai 2021 à 21:48
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
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 919
Modifié le 5 mai 2021 à 21:56
%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
Utilisateur anonyme
Modifié le 5 mai 2021 à 22:05
ok merci,
c'est vrai sur les commandes
call
et
for
je les maîtrises pas encore tout ta fait
0