[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
    1. Bonsoir,

      Que veux tu dire par "est-ce que defrag renvoie un code différent suivant le taux de fragmentation" ?
      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
        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
          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.