Commande pour avoir l'espace disque utilisé ? - Shell/Batch - Programmation
Marsh Posté le 08-04-2005 à 14:57:12
Y'a de la mémoire sur un disque dur ? Ou alors tu parles de la mémoire cache du disque ?
Hum... Tu veux bien sûr parler de l'espace disque restant, hein
Marsh Posté le 08-04-2005 à 15:09:43
Oui je veux bien sur parler de la l'espace disque restant
Marsh Posté le 08-04-2005 à 15:35:09
m'interesse aussi, sous windows bien sur car dir donne l'espace du disque concerné, si on veut l'espace occupe apr un dossier j'ai aps trouvé ^^
Marsh Posté le 08-04-2005 à 16:28:29
Ah bin oui tin j'avais même pas pensé à la commande DIR ! ça donne effectivement l'espace disque disponible, mais en bytes par contre là par exemple je viens de le faire ça me donne ça:
2,147,450,880 bytes free ya un moyen de le convertir pour l'afficher dans mon menu DOS... ?
Marsh Posté le 11-04-2005 à 21:40:17
steve2vince a écrit : |
Tu veux convertir en quoi ?
Marsh Posté le 11-04-2005 à 23:06:53
Si tu sais récupérer les chiffres (2,147,450,880), tu peux convertir en ce que tu veux facilement avec la commande set. Vois l'aide pour plus d'info.
Marsh Posté le 12-04-2005 à 07:28:06
Merci nglechau, la commande set à l'air effectivement intéréssante mais il faudrait que j'ai au moins la formule pour pouvoir la convertir en mo non ?
Marsh Posté le 12-04-2005 à 07:44:53
Ne me dis pas que tu ne sais pas combien d'octets font un Mo ?
Si c'est problème d'anglais : 1 byte = 1 octet
Marsh Posté le 12-04-2005 à 11:06:07
Ben voilà, tu as tout ce qu'il faut pour la conversion
Faut deux choses :
- supprimer les virgules ; et
- diviser x fois par 1024
Marsh Posté le 12-04-2005 à 13:15:53
Merci nglechau c nickel ! Par contre je vais encore t'embeter mais j'ai fait un test pour récupérer uniquement la taille de l'espace disque disponible en faisant ceci:
dir | find "bytes free" > c:\toto.txt
et si je vais voir dans mon fichier toto.txt il m'indique ceci :
"1 Dir(s) 10ÿ461ÿ249ÿ536 bytes free" il faudrait donc que je trouve un moyen d'enlever ce "ÿ" qui est normalement un espace. Mais là ça dépasse mes compétences
Marsh Posté le 12-04-2005 à 19:09:55
Ca doit être le problème de conversion ANSI-OEM et c'est lié à ton environnement qui est en français, parce que chez moi, sous XP anglais, j'ai bien les virgules.
Tu as bien utilisé le dir de XP et non pas un autre ? (genre cygwin) Parce que la sortie de ton dir est en anglais.
Marsh Posté le 12-04-2005 à 19:36:12
J'ai fait le test sur le pc de mon boulot sous Windows XP (installé à la base en Anglais et j'ai changé ensuite la langue en Français dans le panneau de config, d'ou le résultat du Dir en anglais...) Sinon je viens de faire le même teste chez moi qui est du XP vraiment français et c'est pareil, je n'ai pas les virgules...
Enfin ceci dit, même si j'avais des virgules ça ne m'arrangerait pas trop car je ne pourrai pas faire la conversion en méga octet les virgules me gêneraient pour faire la multiplication par 1024 avec SET...
Il faudrait que je trouve un moyen de récupérer uniquement les chiffres sans espace entre....
D'apres ce que j'ai cru comprendre il est possible de récupérer uniquement des lignes entieres avec un DIR et pas une partie précise de la ligne n'est ce pas ?
Merci bien en tout cas de ton aide.
Marsh Posté le 12-04-2005 à 20:27:28
steve2vince a écrit : les virgules me gêneraient pour faire la multiplication par 1024 avec SET... |
Ben je t'avais dit : avec la commande set
As-tu vérifié si tu as un autre dir possible ?
Pour vérifier si c'est un problème de conversion ANSI-OEM, tu peux faire une conversion manuelle avec par exemple PowerBatch, ou certains éditeurs de texte (Editpad entre autres). Si c'est le cas, j'ai un utilitaire qui peut le faire à la ligne de commande (pour un appel depuis un batch).
Marsh Posté le 12-04-2005 à 22:08:47
Bon bin moi je seche là.... J'ai voulu regarder la commande set pour pouvoir extraire uniquement les chiffres et avec la tonne d'option qu'il y a je vois vraiment pas...
Marsh Posté le 12-04-2005 à 22:21:24
Non, elle ne peut pas extraire que des chiffres.
Tu dois chercher à extraire la chaîne 2,147,450,880 par un autre moyen, puis set peut te supprimer la virgule (sauf si c'est déjà fait dans la première étape).
Vois sur www.robvanderwoude.com pour les exemples, parce que pour extraire cette chaîne, ce n'est pas donné.
Marsh Posté le 12-12-2005 à 16:47:25
hello, je me permets de remonter ce topic, qui semble correspondre à peu près à ce que je veux faire !
en fait, j'aurais besoin d'automatiser la vérification de l'espace disque sur une liste prédéfinie de postes en réseau
le dir, ça doit pas marcher pour un poste distant
sinon y a ça : http://www.robvanderwoude.com/files/freespace_vbs.txt
mais ca affiche l'espace disque dans une fenetre à part, alors qu'il me le faudrait dans un fichier txt
des idées ? merci d'avance !
Marsh Posté le 12-12-2005 à 17:35:15
for /f "tokens=3 " %%I IN ('dir C: ^| find /I "free"') DO SET TAILLE=%%I |
Ca répond à ta question ?
Evidement ce code est faux si l'espace est inférieur à 1 Gb ! Là il faudra tester si la variable %L est définie, si elle ne l'est pas décaller les valeurs vers la droite et mettre %%I=0.
On doit pouvoir aussi utiliser la commande SHIFT pour le faire.
Si tu reste bloqué je pourrais t'aider demain je pense.
Attention, j'ai simplifié, "aux erreurs d'arondis près" : il faudrait faire les divisions par 1024 pour avoir les valeurs exactes :
SET TAILLE=%%I%%J%%K%%L |
Je n'aurais pas le temps de tester cette partie ce soir, c'est probablement faux mais dans l'esprit c'est ça.
A+
Marsh Posté le 12-12-2005 à 17:54:48
euh j'y connais rien mais c'est surement bon, merci
sinon en fait, j'ai trouvé un autre solution : c'est sur des serveurs domino, et y a une commande qui permet d'avoir ça, et on peut exporter le résultat dans un fichier quelconque
merci en tout cas
Marsh Posté le 13-12-2005 à 09:17:28
XVI Ames a écrit : euh j'y connais rien mais c'est surement bon, merci |
J'ai vérifié, ça ne marche pas
Enfin ça marche pour des disques relativement petits. Le mien dispose de 34Go de libre, cela dépasse les capacités de calcul de set /a
De toute façon on a juste besoin d'un ordre de grandeur, le premier groupe de chiffre + l'unité (Ko,Mo,Go) suffit pour ton problème.
Concernant les fonctions DOMINO, tant mieux si ça marche, là je n'aurais pas pu t'aider, LOTUS et moi on est Fâchés
Marsh Posté le 13-12-2005 à 12:36:44
BONJOUR,
Perso, pour récupérer le taux de remplissage dun disque ou la taille de la RAM installée, jutilise loutil info system de laide.
Ca vaut ce que ça vaut mais cest mieux que rien
Cet outil nest pas « pilotable » dans laide « outils pour consulter les informations
, Info sur mon ordi
, afficher les Infos system
. Pour le pack1.
Le cheminement est différent pour le pack2 mais on y arrive facilement aussi. De toute façon, ce nest pas de cette manière quon peut lutiliser ! (cest juste pour se rendre compte des infos disponibles)
En fait lintérêt de cette possibilité cest en réalité un fichier (sysinfosum.htm) qui peut parfaitement être lancé indépendamment et surtout dont les infos peuvent être enregistrées au format TXT .( C:\WINDOWS\PCHealth\HelpCtr\System\sysinfo)
Sachant que le message davertissement ActiveX est contrôlé par la clé 1201 de la zone de sécurité 0
(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0
Mettre le 1201 à 0 pendant lexécution et il ny a plus de message)
Jai exploité cette possibilité en fabriquant avec AutoIt un exécutable qui lance ce programme et sauvegarde automatiquement les infos sur un serveur, puis avec un fichier batch du type suivant janalyse les infos dans un tableau.
@echo off
REM pour rechercher le è il faut taper alt231 en ligne de cmd
rem liste de tous les fichiers sysinfo_%%computername%%
traiter
dir /b /a:-d "\\mon_chemin_reseau">"C:\Mes Documents\winxp\batch\sysinfo\liste.txt"
rem titre du tableau
echo nom model pack ram ip dd ddlibre %%>"C:\Mes Documents\winxp\batch\sysinfo\synthese.txt"
rem procdure d'extraction des valeurs.
for /f "tokens=*" %%a in ('type "C:\Mes Documents\winxp\batch\sysinfo\liste.txt"') do call :commande %%a
set variable=
:commande
set variable=%1
if "%variable%" equ "" goto :eof
echo premire valeur : %variable%
for /f "tokens=3" %%b in ('findstr /i /c:"nom du système" \\mon_chemin_reseau\%variable%') do set nom=%%b
echo nom de la machine : %nom:~8%
set model=XXXXXX
for /f "tokens=4" %%c in ('findstr /i /c:"modèle du système" \\mon_chemin_reseau\%variable%') do (
if %%c neq "" set model=%%c
)
echo modle d'ordinateur : %model%
for /f "tokens=3" %%d in ('findstr /i /c:"Service Pack" \\mon_chemin_reseau\%variable%') do set pack=%%d
echo service pack de windows XP : %pack:~1%
for /f "tokens=1" %%e in ('findstr /i /c:"capacité:" \\mon_chemin_reseau\%variable%') do set ram=%%e
echo RAM prsente sur le PC : %ram:~9%
for /f "tokens=2" %%g in ('findstr /i /c:"Adresse IP:" \\mon_chemin_reseau\%variable%') do set ip=%%g
echo adresse IP de la machine : %ip:~3%
for /f "tokens=3" %%h in ('findstr /i /c:"capacité totale" \\mon_chemin_reseau\%variable%') do set dd=%%h
set dd1=%dd:.=%
set /a essai=%dd1%
echo taille du disque dur : %dd% GO
for /f "tokens=2" %%i in ('findstr /i /c:"libre" \\mon_chemin_reseau\%variable%') do set ddlibre=%%i
set ddlibre1=%ddlibre:.=%
set /a essai2="%ddlibre1%"*100
echo espace encore disponible sur le disque : %ddlibre% GO
set /a pourcent="%essai2%"/"%essai%"
echo pourcentage de l'espace encore disponible : %pourcent% %%
rem recencement sur serveur des micros ayant un taux de remplissage supérieur à 80 %%
if %pourcent% lss 20 echo %nom:~8%>>"\\mon_chemin_reseau\espace_limit\liste_micro.txt"
rem gnration d'un fichier de systhse
echo %nom:~8% %model% %pack:~1% %ram:~9% %ip:~3% %dd% %ddlibre% %pourcent%>>"C:\Mes Documents\winxp\batch\sysinfo\synthese.txt"
Cest à améliorer mais ça marche plutôt bien pour moi.
Marsh Posté le 08-04-2005 à 14:51:29
Salut
Connaissez vous une commande ou tout simplement un petit prog sous Dos pour avoir la mémoire disponible ou occupée d'un disque dur ?
En fait, je réalise régulierement des ghost au boulot, sur un lecteur reseau....je fais donc un net use et c'est apres cette commande que je voudrais afficher la mémoire disponible sur ce lecteur reseau en question ou je vais y mettre le ghost.
Voila, merci !
Message édité par steve2vince le 08-04-2005 à 15:10:28