Espace disque et batch

Bonjour

J'ai créé un fichier batch afin de faire une sauvegarde de ma base mysql.
La sauvegarde fonctionne très bien, avec création d'un fichier de sauvegarde pour chaque jours de la semaine (je remercie encore chuka pour m'avoir très fortement aidé).

Un problème se pose. Sur certains serveurs où je dois mettre en place la stratégie de sauvegarde, l'espace disque ne permet pas la création de plusieurs fichiers de sauvegarde.
Par conséquent, j'aimerais que, si l'espace disque est insuffisant pour sauvegarder complètement les bases, un message soit envoyé (par mail ou dans un fichier log), disant à l'administrateur que l'espace disque est faible.
Autrement dis, je voudrais savoir si il existe un moyen de connaitre l'espace disque restant.

Merci d'avance
Configuration: Windows XP
Firefox 3.0.3

10 réponses

  1. Je ne sais pas, peut être une question de droit en écriture à vérifier.
    0
    1. ça marche sur windows xp pro, mais pas sur 2003 server :/

      Il exécute la commande CHKDSK

      Il ne me créé pas le fichier Temp1.txt
      par conséquent, il ne sais pas où chercher la variable %NbKoFree%

      j'ai fait un bête c/c de xp pro à 2003 server, l'architecture étant exactement la même.
      0
      1. Bonjour,

        Je viens de te modifier le script pour qu'il fasse ce que tu demande, dans la boucle fort ou on attribut une valeur à NbKoFree avec la command SET n'oublie pas d'ajouter le /a pour lui dire que c'est une valeur numérique.

        @echo off
        rem contenue de la command CHKDSK mit dans Temp.txt
        CHKDSK > C:\Temp.txt
        rem récupération de la ligne contenant le nombre ko disponibles sur le disque
        FOR /F "delims=" %%a IN ('findstr "Ko" C:\Temp.txt') DO ECHO %%a > C:\Temp1.txt
        rem récupération du nombre d'allocation disponible
        FOR /F "tokens=1 delims= " %%i IN (C:\Temp1.txt) DO SET /a NbKoFree=%%i
        Echo il vous reste : %nbKoFree% ko sur le disque
        rem test si la valeur de la variable est inferieur à la valeur définit
        IF %NbKoFree% LSS 37000000 ECHO Espace disque insuffisant >> D:\fichier.txt
        1
        1. bonjour

          Merci dionysoos. Mis à part que ça prend un peu de temps, ça marche.

          J'aurais une autre question.

          j'aimerais que si %nbKoFree% inférieur à 37 000 000 Ko (par exemple) ça m'écrive "espace disque insuffisant" dans un fichier txt.

          Il faut utiliser l'instruction IF mais le signe "<" ne fonctionne pas. Existe-t-il un moyen pour le faire ?

          IF %nbKoFree% <inférieur à> 37000000 ECHO Espace disque insuffisant >> D:\fichier.txt
          0
          1. Bonjour,
            Si tu pouvais nous la donner j'en serais ravit je ne la connais pas.
            0
            1. Ne surtout pas utiliser CHDSK, c'est crade.
              Utiliser la méthode officielle.
              0
              1. @echo off
                rem contenue de la command CHKDSK mit dans Temp.txt
                CHKDSK > C:\Temp.txt
                rem récupération de la ligne contenant le nombre ko disponibles sur le disque
                FOR /F "delims=" %%a in ('findstr "Ko" C:\Temp.txt') DO ECHO %%a > C:\Temp1.txt
                rem récupération du nombre d'allocation disponible
                FOR /F "tokens=1 delims= " %%i in (C:\Temp1.txt) DO SET NbKoFree=%%i
                Echo il vous reste : %nbKoFree% ko sur le disque

                Voila quelque chose dans le genre, je viens de le tester sa fonctionne, par contre le temps que la command CHKDSK s'éxécute 5 bonnes minutes tu pourrais croire que l'appli a planté mais non.

                Donc sa marche bien mais c'est quand même assez long :(
                0
                1. Merci de ta réponse. Je vais voir si j'arrive à m'en sortir.
                  0
                  1. Bonjour il n'y a pas de command qui fais cette tache automatiquement mais avec de la jugeote tu peut arriver à tous avec la command CHKDISK, va te retourner un résultat de ce genre:

                    C:>CHKDSK
                    Le type du système de fichiers est NTFS.

                    Avertissement ! Le paramètre F n'a pas été spécifié.
                    Exécution de CHKDSK en mode lecture seule.

                    CHKDSK est en train de vérifier les fichiers (étape 1 de 3)...
                    La vérification des fichiers est terminée.
                    CHKDSK est en train de vérifier les index (étape 2 de 3)...
                    La vérification des index est terminée.
                    CHKDSK récupère les fichiers perdus.
                    CHKDSK est en train de vérifier les descripteurs de sécurité (étape 3 de 3)..
                    La vérification des descripteurs de sécurité est terminée.
                    CHKDSK a découvert de l'espace libre marqué alloué dans la
                    bitmap de la table de fichiers maîtres (MFT).
                    Correction des erreurs dans le carte du volume.
                    Windows a détecté des problèmes sur le système de fichiers.
                    Exécutez CHKDSK avec l'option /F pour les corriger.

                    39013852 Ko d'espace disque au total.
                    25569392 Ko dans 214858 fichiers.
                    60520 Ko dans 6680 index.
                    0 Ko dans des secteurs défectueux.
                    290016 Ko utilisés par le système.
                    65536 Ko occupés par le fichier journal.
                    13093924 Ko disponibles sur le disque.

                    4096 octets dans chaque unité d'allocation.
                    9753463 unités d'allocation au total sur le disque.
                    3273481 unités d'allocation disponibles sur le disque.

                    Il te suffit de retourner le résultat avec echo dans un fichier texte temporaire traiter ce dernier pour récupérer juste la ligne qui nous intéresse
                    donc cette ligne "3273481 unités d'allocation disponibles sur le disque"
                    Ensuite tu retraite cette ligne pour ne récupérer que 3273481
                    pour faire ces traitement regarde du coté de la command FOR /F ;)
                    ET une fois que tu a récupérer cette valeur tu fais un simple calcul
                    unités d'allocation disponibles sur le disque X octets dans chaque unité d'allocation
                    le résultat sera la taille restant sur ton disque Dur en octet.

                    Voila sa a l'air peut être compliqué mais je te rassure c'est très simple, bonne chance.
                    0
                    1. Personne ne peut me venir en aide ? (C'est un peu du up sauvage mais j'ai vraiment besoin d'aide :S)
                      0