[MS-DOS] Utiliser les conditions

Je voudrais savoir comment utiliser les conditions dans MS-DOS.

J'aimerais créer un fichier bat qui défragmente le disque dur si celui ci à besoin d'être défragmenté (en utilisant la commande defrag c: -a pour analyser le disque dur, suite à cette commande, un message s'affiche : soit :
_ vous devriez défragmenter ce disque dur
ou
_ il ne vous est pas nécessaire de défragmenter ce volume.

Si ce dernier méssage est affiché à l'écran, alors exécuter la défragmentation avec la commande defrag c: -f. Mais je suis perdu entre les différents arguments et l'aide de MS-DOS qui n'est pas très parlante, je n'y arrive pas. Avez-vous un exemple à me proposer ?

6 réponses

  1. bonsoir,

    je n'ai pas de réponse pour le moment :)
    à vérifier : est-ce que defrag renvoie un code différent suivant le taux de fragmentation ..... je n'en suis pas persuadé :)

    -------------------------------
    ... WinErr 01B : Erreur illégale - Windows ne vous a pas autorisé à avoir cette erreur
    0
    1. Bonsoir,

      Que veux tu dire par "est-ce que defrag renvoie un code différent suivant le taux de fragmentation" ?
      0
      1. re-

        en règle générale, quand tu veux introduire un test de condition
        (dans un batch ou autre) il faut bien quelque chose à tester !!!
        pour defrag je n'en suis pas persuadé du tout ....

        mais laissons les spécialistes s'exprimer :)

        -------------------------------
        ... WinErr 01B : Erreur illégale - Windows ne vous a pas autorisé à avoir cette erreur
        0
        1. bonsoir

          ouaip, ben ouaip, je sais pas trop non plus...
          Je vais prendre mon surf et aller surfer un peu sur le site de Microsoft France, peut-être vais-je trouver un gros poisson pour ce soir. (en fait, je vais plutôt y aller demain, là je vais aller me coucher...)

          Merci
          0
          1. avec errorlevel peut-etre
            0
            1. Bonjour,

              On peut toujours se bricoler une petite fonction (si c'est toujours pertinent .......):

              ECHO OFF
              
              SETLOCAL ENABLEdelayedExpansion
              SETLOCAL ENABLEextensions
              
              CLS
              
              SET "F_MESDEF=defrag.txt"
              SET  "mesdefrag=est nécessaire"
              
              defrag c: -a        >             %F_MESDEF%
              
                       FOR  /F   "tokens=1,1* delims="  %%J    IN   (
                              ' TYPE %F_MESDEF%  ^|  FIND /I "%mesdefrag%"' )  DO  (
                              defrag c: -f        )
              
                      IF       EXIST 	%F_MESDEF%      ( ERASE     /A     %F_MESDEF%)
                              
              :EOF


              Je ne connais pas la teneur exacte du message invitant à défragmenter, j'ai présumé qu'il est identique à son contraire à la négation près. :
              Il ne vous est pas nécessaire de défragmenter ce volume.
              Il vous est nécessaire de défragmenter ce volume.
              1