[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. 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
    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