Batch fonction choice

[Résolu/Fermé]
Signaler
Messages postés
175
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
30 mai 2019
-
Messages postés
3276
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
18 juillet 2021
-
Bonjour,

voila , je m'essaie depuis peu a la programmation batch pour mon propre plaisir.
J'essaie actuellement d'exécuter une defragmentation via un batch qui propose quelque choix de décision au fur et a mesure seulement le problème c'est que ce denier ne propose pas de choix et se lance lui-même dans l'exécution...
quelqu'un aurait-il une idée?

merci d'avance.

voici le source :

echo off
@cls
@color 0a
title defragmenteur de disque
echo veuillez entrer le chemin exacte.exemple : C:\ ou E: selon le volume.
echo,

:restart

set /p per= volume a analyser/defragmenter :
@cls
defrag.exe %per% /A /V

echo voulez-vous defragmenter %per% ?
echo o : oui defragmenter!
echo n : non ne pas defragmenter!

choice /c:on faites votre choix

if %errorlevel%==1 goto o
if %errorlevel%==2 goto n

:o
defrag.exe %per% /U /X /V
echo defragmentation terminer
goto fin

:n
echo changer de volume ?

echo o :changer de volume
echo n : quitter ?

choice /c:on

if %errorlevel%==1 goto restart
if %errorlevel%==2 goto fin

:fin
pause
            
                

3 réponses

Messages postés
3276
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
18 juillet 2021
1 617
Salut.


Choice n'est pas conseillé... Surtout que dans votre code, vous pouvez aisément ne pas l'utiliser.


Je ferais comme ceci :
echo voulez-vous defragmenter  ?
echo 1 : oui defragmenter!
echo 2 : non ne pas defragmenter!
echo.
set /p a=Faites votre choix
if %a%==1 goto defrag
if %a%==2 goto nodefrag
:defrag
echo test1
...etc..
Messages postés
175
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
30 mai 2019
67
merci pour la réponse.
je débute tout juste en batch et je voudrais savoir pourquoi choice n'est pas conseiller? et il n'est pas conseiller dans ce cas présent ou de manière générale?
Messages postés
3276
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
18 juillet 2021
1 617
Salut ;)

Car choice n'existe pas sous windows XP.
Par contre, set /p si.

@+
Messages postés
175
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
30 mai 2019
67
ok merci.
Messages postés
175
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
30 mai 2019
67
bon.. je reviens une nouvelle fois a la charge. La je ne comprend pas d'où viendrai l'erreur, il lance l'analyse (defrag.exe /A /V) et la consolidation (defrag.exe /U /X /V ) sans intervention de ma part.

code :

echo off
@cls
@color 0a

title defragmenteur de disque

echo veuillez entrer le chemin exacte.exemple : C:\ ou E: selon le volume.
echo,

set /p per= volume a analyser/defragmenter :

echo voulez-vous defragmenter %per% ?
echo 1 : oui analyser!
echo 2 : non ne pas defragmenter!

if %per%==1 goto defrag
if %per%==2 goto notdefrag

:defrag
defrag.exe %per% /A /V
pause

:notdefrag
goto fin

echo voulez-vous defragmenter %per% ?

echo 1 : defragmneter
echo 2 : ne pas defragmenter

if %per%==1 goto godefrag
if %per%==2 goto nodefrag

:godefrag
defrag.exe %per% /U /X /V

echo defragmentation terminer
goto fin

:nodefrag
goto fin

:fin
pause
Messages postés
3276
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
18 juillet 2021
1 617
Salut ;)

echo veuillez entrer le chemin exacte.exemple : C:\ ou E: selon le volume.
echo,

set /p per= volume a analyser/defragmenter :

echo voulez-vous defragmenter %per% ?
echo 1 : oui analyser!
echo 2 : non ne pas defragmenter!

if %per%==1 goto defrag
if %per%==2 goto notdefrag

Dis moi, si je me trompe...

Mais :
%per% correspond au volume
Et ensuite, tu changes %per% en 1 ou 2

Il manque selon moi, un second set /p pour le choix (1 ou 2)

Comme ceci :
echo veuillez entrer le chemin exacte.exemple : C:\ ou E: selon le volume.
echo,

set /p per=volume a analyser/defragmenter :

echo voulez-vous defragmenter %per% ?
echo 1 : oui analyser!
echo 2 : non ne pas defragmenter!
set /p choix=Votre choix ?

if %choix%==1 goto defrag
if %choix%==2 goto notdefrag


Car %per% c'est bien le volume, il ne peut donc pas prendre ni 1 ni 2 ;)



++
Messages postés
175
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
30 mai 2019
67
ha oui..en effet . dit comme ca ca parait logique x).
merci.
je vais tester ca et je te dirait.
bonne journée
Messages postés
175
Date d'inscription
samedi 31 juillet 2010
Statut
Membre
Dernière intervention
30 mai 2019
67
c'est bon c'est nikel.
merci de m'avoir aiguiller.
bonne journée
Messages postés
3276
Date d'inscription
lundi 11 novembre 2013
Statut
Membre
Dernière intervention
18 juillet 2021
1 617
@+ :)
Bonne journée.