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

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