Batch fonction choice
Résolu
neo-genesis
Messages postés
184
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
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
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
-
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.. -
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 -
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 ;)
++