Soyez le premier à donner votre avis sur cette source.
Snippet vu 11 880 fois - Téléchargée 29 fois
#include <stdio.h> /* Bibliotheque d'entrees sorties (printf, ...) */ #include <afx.h> /* Bibliotheque de parcours de fichiers (FindFile, ...) */ /* Affiche l'erreur rencontree */ // MSDN help : http://msdn.microsoft.com/library/en-us/debug/base/getlasterror.asp void error(LPSTR lpszFunction) { DWORD dw = GetLastError(); printf("Fonction : %s a rencontre une erreur : Num erreur %u\\n",lpszFunction, dw); puts("\\n\\n\\nPour quitter pressez la touche entree..."); getchar(); ExitProcess(dw); }// fin fonction error /* Retourne l espace disque total libre retour sur 8 octets */ // MSDN help : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespaceex.asp unsigned _int64 DiskFreeSpaceAvailableTotal(char * pszRoot) { ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes; if(!GetDiskFreeSpaceEx(pszRoot, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes)) { return 0; } else { return (unsigned _int64) liTotalFreeBytes.QuadPart; }// fin if }// fin fonction DiskFreeSpaceAvailableTotal /* Retourne l espace disque libre pour l'utilisateur courant Si une gestion des quotas est mise en place cette taille sera différente de DiskFreeSpaceAvailableTotal retour sur 8 octets */ // MSDN help : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespaceex.asp unsigned _int64 DiskFreeSpaceAvailable(char * pszRoot) { ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes; if(!GetDiskFreeSpaceEx(pszRoot, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes)) { return 0; } else { return (unsigned _int64) liFreeBytesAvailable.QuadPart; }// fin if }// fin fonction DiskFreeSpaceAvailable /* Retourne la taille du total du disque retour sur 8 octets */ // MSDN help : http://msdn.microsoft.com/library/en-us/fileio/base/getdiskfreespaceex.asp unsigned _int64 DiskSpaceTotal(char * pszRoot) { ULARGE_INTEGER liFreeBytesAvailable, liTotalBytes, liTotalFreeBytes; if(!GetDiskFreeSpaceEx(pszRoot, &liFreeBytesAvailable, &liTotalBytes, &liTotalFreeBytes)) { return 0; } else { return (unsigned _int64) liTotalBytes.QuadPart; }// fin if }// fin fonction DiskSpaceTotal /* Retourne la taille d'un dossier retour sur 8 octets */ // MSDN help : http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_CFileFind.asp unsigned _int64 GetFolderSize(char * pChemin) { unsigned _int64 taille = 0, tailletmp = 0; BOOL bContinue ; CFileFind listefichiers; char sNouveauChemin[MAX_PATH]; char sCheminATester[MAX_PATH]; char sNomFichier[MAX_PATH]; lstrcpy(sNouveauChemin, pChemin); strcat(sNouveauChemin, "\\\\*.*"); //printf("--> START : %s\\n", sNouveauChemin); // Lancement du parcours de fichiers bContinue = listefichiers.FindFile(_T(sNouveauChemin)); if(!bContinue) { error("GetFolderSize"); return -1; }// fin if // Boucle sur tous les dossier et fichiers while (bContinue) { bContinue = listefichiers.FindNextFile(); lstrcpy(sNomFichier, listefichiers.GetFileName()); // Si . ou .. ne rien faire if(listefichiers.IsDots()) { continue; } // Si dossier parcours de son arborescence & recuperation de sa taille else if (listefichiers.IsDirectory()) { lstrcpy(sCheminATester, listefichiers.GetFilePath()); tailletmp = GetFolderSize(sCheminATester); if(tailletmp == -1) { return -1; } else { taille += tailletmp; }// end if } // Ajout de la taille de chaque fichiers à la taille totale du dossier pere else { taille += (unsigned _int64) listefichiers.GetLength(); }// fin if }// fin while // fermeture du parcours de fichiers listefichiers.Close(); // Renvoie la taille totale du dossier return taille; }// fin GetFolderSize void main(int argc, char *argv[]) { char * pPath[1] = {""}; printf("#################################################\\n"); printf("########## FONCTION INFO ESPACE DISQUE ##########\\n"); printf("#################################################\\n\\n"); // Test des arguments d'entrée if(argc == 1) { printf("Pas d'arguments, test du disque courant.\\n\\n"); pPath[0] = NULL; } else if(argc == 2) { printf("arguments = %s.\\n", argv[1]); pPath[0] = argv[1]; } else { printf("Nombres d'arguments invalides.\\n"); return; }// fin if // Test des fonctions printf("Lecteur de test = ''%s''.\\n", pPath[0]); printf("\\nCapacite : %I64d octets.\\n", DiskSpaceTotal(pPath[0])); printf("Espace libre : %I64d octets.\\n", DiskFreeSpaceAvailable(pPath[0])); printf("Espace utilise : %I64d octets.\\n", DiskSpaceTotal(pPath[0]) - DiskFreeSpaceAvailable(pPath[0])); if(pPath[0]) { printf("Taille : %I64d octets.\\n", GetFolderSize(pPath[0])); }// fin if /* Pause */ puts("\\n\\n\\nPour quitter pressez la touche entree..."); getchar(); }// fin fonction main
24 juil. 2006 à 18:11
6 mars 2006 à 11:24
mes compilateurs ne trouvent pas
est ce que c'est exportable sous linux (c'est quoi le compilateur)
merci pour les reponces
27 févr. 2006 à 17:10
si ca ne marche pas alors c'est un probeme
---MS
23 sept. 2005 à 18:09
il est très bien ce code....
d'ailleur sans note => j'y remédie....
++
15 janv. 2004 à 21:17
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.