Calcul espace disque libre restant [Résolu]

elvirez 2 Messages postés vendredi 8 décembre 2006Date d'inscription 22 mars 2007 Dernière intervention - 21 mars 2007 à 16:32 - Dernière réponse : jmvd2 17 Messages postés vendredi 11 avril 2003Date d'inscription 16 mars 2010 Dernière intervention
- 9 sept. 2009 à 12:23
Bonjour a tous !

Un grand merci déja à ceux qui vont peut être m'aider.

Voila mon problème :

J'aurais besoin d'un petit programme qui permettrait de connaitre l'espace disque libre restant  du disque dur sur un PC (windows XP). Si le resultat est inférieur à un certain seuil, alors ca affiche un message d'alerte (afin que l'utilisateur soit prévenu et fasse le ménage).
Ce contrôle serait effectué chaque jour. (pas forcement redémarage de la bécane).

Existe-t-il un moyen simple de faire cela ? Connaissez vous une adresse ou est publier la réponse à mon problème ?...

C'est hors de mes compétences, qui je dois l'avouer sont très limiter en programmation....

C'est tout, merci de votre aide !

lol

elvirez
Afficher la suite 

Votre réponse

18 réponses

Meilleure réponse
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 22 mars 2007 à 02:24
3
Merci
pourquoi faire simple quand on peut faire compliqué:

Function GetFreePercentDisk(ByVal sDrive As String) As String
    Dim BytesFreeToCalller As Currency
    Dim TotalBytes         As Currency
    Dim TotalFreeBytes     As Currency
       
    Call GetDiskFreeSpaceEx(sDrive, BytesFreeToCalller, TotalBytes, TotalFreeBytes)
    GetFreePercentDisk = Round(100 * TotalFreeBytes / TotalBytes, 2)
   
End Function

Daniel

Merci Gobillot 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de Gobillot
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 21 mars 2007 à 16:42
0
Merci
Salut,
As tu essayer de rechercher dans les code disponible ici meme?

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 21 mars 2007 à 16:48
0
Merci
Salut!

L'homme créa la programmation
L'homme programma
L'homme créa le moteur de recherchehttp://www.vbfrance.com/codes/CALCUL-ESPACE-DISQUES_28924.aspx

un peu de recherche c'est hors de tes compétences aussi?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Commenter la réponse de drikce06
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 mars 2007 à 16:57
0
Merci
Salut,

il doit bien y avoir une API qui gère ça.
Sinon, au pire le WMI doit trouver cette info  ;)

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 21 mars 2007 à 20:46
0
Merci
 Bonsoir à tous

un exemple tout simple, avec fso, à adapter en vb6.

'Inventaire lecteurs
Dim fso, d, dc, s, n
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d in dc
    Select Case d.DriveType
           Case 2:

             ' Conversion de la taille totale en Go : division par 1073741824 (1024x1024x1024)
             ' Conversion de la taille totale en Mo : division par 1048576 (1024x1024)  

           p = "=> Espace total: " & FormatNumber(d.TotalSize/1024/1024/1024, 1)      & " Go"
           q = "=> Espace disponible: " & FormatNumber(d.AvailableSpace/1024/1024/1024, 1) & " Go"
           s = s & d.DriveLetter & ":" &vbCrLf& p &vbCrLf& q &vbCrLf
           s = s & "Pourcentage occupé :  " &_
               FormatPercent((d.ToTalSize - d.AvailableSpace) / d.ToTalSize, 0)
           s = s &vbCrLf& "Pourcentage libre      :  " &_
               FormatPercent(d.AvailableSpace / d.TotalSize,0) &vbCrLf 

               MsgBox FormatPercent(d.AvailableSpace / d.TotalSize,0)

               If FormatPercent(d.AvailableSpace / d.TotalSize,0) < "20%" Then
                  Msgbox "disk "  & d.DriveLetter &vbTab& "seuil < à 20%",vbCritical
               End If  
          Case Else
   End Select
   Next

MsgBox s,,"Inventaire des Disques"
'---------------------
Pour la périodicité, mettre le code en tâche planifiée est une possibilité.

jean-marc
Commenter la réponse de cs_JMO
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 mars 2007 à 22:46
0
Merci
Salut Jean-Marc,

ton code fonctionne parfaitement en VB6 (et avec VB 2005 aussi), juste 2 modifs à faire :
déclarer q et p, et tes &vbCrLf& ainsi que &_ doivent avoir un espace avant et après le &.

Ton code pour VB6 (et colorisé ) :

Option Explicit

Private Sub Form_Load()
'Inventaire lecteurs
Dim fso, d, dc, s, n, q, p
Set fso =  CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d In dc
    Select Case d.DriveType
           Case 2:

             ' Conversion de la taille totale en Go : division par 1073741824 (1024x1024x1024)
             ' Conversion de la taille totale en Mo : division par 1048576 (1024x1024)

           p = "=> Espace total: " & FormatNumber(d.TotalSize / 1024 / 1024 / 1024, 1) & " Go"
           q = "=> Espace disponible: " & FormatNumber(d.AvailableSpace / 1024 / 1024 / 1024, 1) & " Go"
           s = s & d.DriveLetter & ":" & vbCrLf & p & vbCrLf & q & vbCrLf
           s = s & "Pourcentage occupé :  " & _
               FormatPercent((d.TotalSize - d.AvailableSpace) / d.TotalSize, 0)
           s = s & vbCrLf & "Pourcentage libre      :  " & _
               FormatPercent(d.AvailableSpace / d.TotalSize, 0) & vbCrLf

               MsgBox FormatPercent(d.AvailableSpace / d.TotalSize, 0)

               If FormatPercent(d.AvailableSpace / d.TotalSize, 0) < "20%" Then
                  MsgBox "disk " & d.DriveLetter & vbTab & "seuil < à 20%", vbCritical
               End If
          Case Else
   End Select
   Next

MsgBox s, , "Inventaire des Disques"

End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

Bonne soirée à tous !

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 mars 2007 à 22:48
0
Merci
Jean-Marc,

je pense que ça peut valoir le coup de le déposer sur Codyx  ;)
Ce snippet ferai du bien car il n'y est pas !

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 22 mars 2007 à 00:41
0
Merci
Pitié avec cette daube de fso, tout juste bon pour vbscript.

Vous traduirez e VB:

unsigned _int64 bnuGetDiskFreeSpace(char* pszRoot)
{
  ULARGE_INTEGER liFreeBytes, liTotalBytes, liTotalFreeBytes;
  if(!GetDiskFreeSpaceEx(pszRoot, &liFreeBytes, &liTotalBytes, &liTotalFreeBytes)) return 0;
  return (unsigned _int64) liTotalFreeBytes.QuadPart;
}

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 22 mars 2007 à 01:26
0
Merci
Salut BruNews,

ça peut le faire ?

Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long

Private Sub EXEMPLE()
    
    MsgBox GetFreePercentDisk("C:") '13,42
    MsgBox GetFreePercentDisk("D:") '94,51
    MsgBox GetFreePercentDisk("F:") '29,27
    Unload Me
End Sub

Function GetFreePercentDisk(ByVal sDrive As String) As String
    Dim Sectors As Long, Bytes As Long, FreeC As Long, TotalC As Long, Total As Long, Freeb As Long
        
GetDiskFreeSpace sDrive, Sectors, Bytes, FreeC, TotalC
GetFreePercentDisk =  Space(8)
GetFreePercentDisk = CStr(Round(100 / TotalC * FreeC, 2)) & " %"
End Function

~ <small> Mortalino ~ Colorisation automatique </small>

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 22 mars 2007 à 01:35
0
Merci
NON !!!

GetDiskFreeSpace est obsolète et a été remplacée par la version Ex depuis Win95 SE car elle donne des résultats erronés avec les grands disques, il ne faut absolument plus l'employer.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 22 mars 2007 à 01:37
0
Merci
Ok bon à savoir,
ne pas prendre en compte les variables inutilisées ^^

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 22 mars 2007 à 02:05
0
Merci
Bon, j'espère alors que c'est mieux   :

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long

Function GetFreePercentDisk(ByVal sDrive As String) As String
    Dim BytesFreeToCalller As Currency, TotalBytes As Currency
    Dim TotalFreeBytes As Currency, TotalBytesUsed As Currency
        
Call GetDiskFreeSpaceEx(sDrive, BytesFreeToCalller, TotalBytes, TotalFreeBytes)
GetFreePercentDisk =  Space(8)
GetFreePercentDisk = CStr(Round(100 - (100 / ((TotalBytes * 10000) / 1024 / 1024 / 1024) * (((TotalBytes - TotalFreeBytes) * 10000) / 1024 / 1024 / 1024)), 2)) & " %"

End Function

Private Sub Form_Load()
    MsgBox GetFreePercentDisk("C:") '13.44 %
    MsgBox GetFreePercentDisk("D:") '94.55 %
    MsgBox GetFreePercentDisk("F:")  '29.27 %
    Unload Me
End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 22 mars 2007 à 02:09
0
Merci
plus lisible le 1024 élevé à la puissance 3:
GetFreePercentDisk = CStr(Round(100 - (100 / ((TotalBytes * 10000) / (1024 ^ 3)) * (((TotalBytes - TotalFreeBytes) * 10000) / (1024 ^ 3))), 2)) & " %"

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 22 mars 2007 à 02:29
0
Merci
Arf, oui, bien vu

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
elvirez 2 Messages postés vendredi 8 décembre 2006Date d'inscription 22 mars 2007 Dernière intervention - 22 mars 2007 à 08:22
0
Merci
Merci a tous d'avoir répondu !

Je ne post pas souvent de message sur les forums, je fait d'abord des recherches sur les topics existants (qui est en effet dans mes compétences !!), il est vrai que cette fois ci je suis pressé par le temps....

Merci pour vos codes.

elvirez
Commenter la réponse de elvirez
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 22 mars 2007 à 17:17
0
Merci
 Bonjour à tous

Salut Mortalino,
Suivant avec opiniatreté les conseils avisés de BruNews, je ne déposerai pas mon p.... de code vbs utilisant ce p..... de fso !!!
BruNews me restreint avec "mon" wmi, wbem, dictionary !!! Exit fso ....
Non, sérieusement, il a surement raison et l'a déjà maintes fois signifié.
Mettre une source en wmi n'est pas justifié, vu la multitude d'exemple via google. 

Daniel Gobillot utilse "GetDiskFreeSpaceEx"....function exclusive de vb6 ???

Toutefois,  il serait peut-être utile, pour l'esthétisme,  de rajouter un test sur Mo ou Go (pour LCID fr-fr).

jean-marc
Commenter la réponse de cs_JMO
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 22 mars 2007 à 17:31
0
Merci
GetDiskFreeSpaceEx est API Win exportée par kernel32.dll, rien à voir avec VB.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
jmvd2 17 Messages postés vendredi 11 avril 2003Date d'inscription 16 mars 2010 Dernière intervention - 9 sept. 2009 à 12:23
0
Merci
Bonjour à tous,
Voici ma version en asp.
Je cherche à interroger des disques distants à partir d'un fichier texte avec mes serveurs dedant. Pouvez-vous m'aider ?



<%
'Inventaire lecteurs
Dim fso, d, dc, s, n
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d in dc
Select Case d.DriveType
Case 2:

' Conversion de la taille totale en Go : division par 1073741824 (1024x1024x1024)
' Conversion de la taille totale en Mo : division par 1048576 (1024x1024)

p = " " & "Espace total: " & FormatNumber(d.TotalSize/1024/1024/1024, 1) & " Go "
q = "=> Espace disponible: " & FormatNumber(d.AvailableSpace/1024/1024/1024, 1) & " Go" & "
"
s = s & d.DriveLetter & ":" &vbCrLf& p &vbCrLf& q &vbCrLf
s = s & " Pourcentage occupé : " &_
FormatPercent((d.ToTalSize - d.AvailableSpace) / d.ToTalSize, 0)
s = s &vbCrLf& "Pourcentage libre : " &_
FormatPercent(d.AvailableSpace / d.TotalSize,0) & "
" &vbCrLf

If FormatPercent(d.AvailableSpace / d.TotalSize,0) > "10%" Then
Response.Write ( "disk " & d.DriveLetter &vbTab& "Alerte ! Seuil < à 20%" & " " & "
")
End If
Case Else
End Select
Next

'MsgBox s,,"Inventaire des Disques"
Response.Write ( s )

%>

J.Michel
Commenter la réponse de jmvd2

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.