Commande pour avoir l'espace disque utilisé ?

Commande pour avoir l'espace disque utilisé ? - Shell/Batch - Programmation

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 !  :bounce:


Message édité par steve2vince le 08-04-2005 à 15:10:28
Reply

Marsh Posté le 08-04-2005 à 14:51:29   

Reply

Marsh Posté le 08-04-2005 à 14:57:12    

Y'a de la mémoire sur un disque dur ? [:dawa] Ou alors tu parles de la mémoire cache du disque ? [:dawa]
 
 
Hum... Tu veux bien sûr parler de l'espace disque restant, hein :D

Reply

Marsh Posté le 08-04-2005 à 15:09:43    

Oui je veux bien sur parler de la l'espace disque restant  ;)

Reply

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é ^^

Reply

Marsh Posté le 08-04-2005 à 16:28:29    

Ah bin oui tin   :whistle:  j'avais même pas pensé à la commande DIR ! ça donne effectivement l'espace disque disponible, mais en bytes par contre  :heink:  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... ?

Reply

Marsh Posté le 11-04-2005 à 09:35:54    

Quelqu'un saurait me répondre ?

Reply

Marsh Posté le 11-04-2005 à 21:40:17    

steve2vince a écrit :


2,147,450,880 bytes free ya un moyen de le convertir pour l'afficher dans mon menu DOS... ?


Tu veux convertir en quoi ?

Reply

Marsh Posté le 11-04-2005 à 22:50:53    

Je voudrais convertir en Méga octet par exemple

Reply

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.

Reply

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 ?

Reply

Marsh Posté le 12-04-2005 à 07:28:06   

Reply

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 :)

Reply

Marsh Posté le 12-04-2005 à 08:28:17    

1024  :D

Reply

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
 
:)

Reply

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  :heink:  

Reply

Marsh Posté le 12-04-2005 à 16:11:16    

:bounce:

Reply

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.

Reply

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. ;)  :hello:

Reply

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 :lol:
 
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).
 
 

Reply

Marsh Posté le 12-04-2005 à 22:08:47    

Bon bin moi je seche là.... :heink:  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... :??:

Reply

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

Reply

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 !

Reply

Marsh Posté le 12-12-2005 à 17:35:15    

for /f "tokens=3 " %%I IN ('dir C: ^| find /I "free"') DO SET TAILLE=%%I
ECHO %TAILLE%
for /f "tokens=1,2,3,4 delims=," %%I IN ("%TAILLE%" ) DO ECHO %%I GB %%J MB %%K KB %%L Bytes

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
SET /a TailleGb=TAILLE/1024/1024/1024
SET /a TailleMb=TAILLE-TailleGb*1024*1024*1024
SET /a TailleMb=TailleMb/1024/1024
SET /a TailleKb=TAILLE-(TailleGb*1024*1024*1024)-(TailleMb*1024*1024)
SET /a TailleKb=TailleKb/1024

Je n'aurais pas le temps de tester cette partie ce soir, c'est probablement faux mais dans l'esprit c'est ça.
 
A+


Message édité par madmartigan le 12-12-2005 à 17:43:58

---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 12-12-2005 à 17:54:48    

euh j'y connais rien mais c'est surement bon, merci :D
 
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 :jap:

Reply

Marsh Posté le 13-12-2005 à 09:17:28    

XVI Ames a écrit :

euh j'y connais rien mais c'est surement bon, merci :D
 
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 :jap:


J'ai vérifié, ça ne marche pas  :cry:  
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  :whistle:  
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  :kaola:  


---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...
Reply

Marsh Posté le 13-12-2005 à 12:36:44    

BONJOUR,
Perso, pour récupérer le taux de remplissage d’un disque ou la taille de la RAM installée, j’utilise l’outil info system de l’aide.
Ca vaut ce que ça vaut mais c’est mieux que rien …
 
Cet outil n’est pas « pilotable » dans l’aide « 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 n’est pas de cette manière qu’on peut l’utiliser ! (c’est juste pour se rendre compte des infos disponibles)
 
En fait l’intérêt de cette possibilité c’est 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 d’avertissement 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 l’exécution et il n’y a plus de message)
 
J’ai 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 j’analyse 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 proc‚dure 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 premiŠre 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 modŠle 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 pr‚sente 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 g‚n‚ration d'un fichier de systhŠse
echo %nom:~8% %model% %pack:~1% %ram:~9% %ip:~3% %dd% %ddlibre% %pourcent%>>"C:\Mes Documents\winxp\batch\sysinfo\synthese.txt"
 
 
C’est à améliorer mais ça marche plutôt bien pour moi.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed