Espace disque et batch

Fermé
Dikmas Messages postés 376 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 3 mai 2012 - 5 nov. 2008 à 09:35
dionysoos Messages postés 82 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 février 2010 - 7 nov. 2008 à 12:12
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
A voir également:

10 réponses

dionysoos Messages postés 82 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 février 2010 4
6 nov. 2008 à 14:01
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
Dikmas Messages postés 376 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 3 mai 2012 63
5 nov. 2008 à 12:37
Personne ne peut me venir en aide ? (C'est un peu du up sauvage mais j'ai vraiment besoin d'aide :S)
0
dionysoos Messages postés 82 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 février 2010 4
5 nov. 2008 à 15:36
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
Dikmas Messages postés 376 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 3 mai 2012 63
5 nov. 2008 à 15:42
Merci de ta réponse. Je vais voir si j'arrive à m'en sortir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dionysoos Messages postés 82 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 février 2010 4
5 nov. 2008 à 16:21
@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
Ne surtout pas utiliser CHDSK, c'est crade.
Utiliser la méthode officielle.
0
dionysoos Messages postés 82 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 février 2010 4
6 nov. 2008 à 08:48
Bonjour,
Si tu pouvais nous la donner j'en serais ravit je ne la connais pas.
0
Dikmas Messages postés 376 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 3 mai 2012 63
6 nov. 2008 à 13:28
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
Dikmas Messages postés 376 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 3 mai 2012 63
6 nov. 2008 à 14:36
ç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
dionysoos Messages postés 82 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 25 février 2010 4
7 nov. 2008 à 12:12
Je ne sais pas, peut être une question de droit en écriture à vérifier.
0