Batch fonction choice

Résolu
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

  1. 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..
    1. 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?
    2. Salut ;)

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

      @+
    3. ok merci.
  2. 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
    1. 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 ;)

      ++
      1. ha oui..en effet . dit comme ca ca parait logique x).
        merci.
        je vais tester ca et je te dirait.
        bonne journée
      2. c'est bon c'est nikel.
        merci de m'avoir aiguiller.
        bonne journée
      3. @+ :)
        Bonne journée.