begin process at 2012 05 27 16:05:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > ESPACE LIBRE, UTILISÉ, CAPACITÉ D'UN DISQUE ET TAILLE D'UN DOSSIER

ESPACE LIBRE, UTILISÉ, CAPACITÉ D'UN DISQUE ET TAILLE D'UN DOSSIER


 Information sur la source

Note :
6,75 / 10 - par 4 personnes
6,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Classé sous :espace, libre, utilisé, capacité, disque Niveau :Débutant Date de création :15/01/2004 Vu :7 997

Auteur : myocean

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

tout est dans le titre

Source

  • #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
#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



 Sources de la même categorie

Source avec Zip Source avec une capture INFORMATION PROCESSEUR (CPUID) par Devils_Tiger
Source avec Zip Source avec une capture LECTURE TEMPÉRATURE PROCESSEUR par Devils_Tiger
Source avec Zip Source avec une capture LECTURE FRÉQUENCE PROCESSEUR par Devils_Tiger
Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE par pgl10
Source avec Zip Source avec une capture POUR AFFICHER LES CARACTÈRES ACCENTUÉS SOUS WINDOWS EN MODE ... par pgl10

 Sources en rapport avec celle ci

Source avec une capture DISK FILLER MULTI THREADING par e_NeX
Source avec Zip TXT SUPPRIMER LIGNES DOUBLONS (WIN32) par BruNews
Source avec Zip BASE DE DONNÉES FICHIER par xasm
LISTEUR DE FICHIERS/DOSSIERS par saylar
SSCANF POUR SUPPRIMER DES ESPACES (COMME TRIM()) par darkpoulpo

Commentaires et avis

Commentaire de LordBob le 15/01/2004 21:17:36

je pense que tu aurrais pu mettre un zip parce que a voir le code comme ca, ca donne la migraine...

Commentaire de magic_Nono le 23/09/2005 18:09:22

oh bob....

il est très bien ce code....
d'ailleur sans note => j'y remédie....

++

Commentaire de sabri007 le 27/02/2006 17:10:41

Je vais tester
si ca ne marche pas alors c'est un probeme
---MS

Commentaire de petit_loup77 le 06/03/2006 11:24:07

c'est quoi la biblio  "<afx.h>"
mes compilateurs ne trouvent pas
est ce que c'est exportable sous linux (c'est quoi le compilateur)
merci pour les reponces

Commentaire de deck_bsd le 24/07/2006 18:11:22

au risque de paraitre idio, est ce que ce programme trounerai sur mon pc tjrs en 32 bits ? car je voi des _int64 , des ULARGE ,...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

espace disque libre [ par mat74 ] salut a ts je cherche un moy de determiner l'espace libre sur une de mes partition et je sais vraiment pas comment faire car la seule fonction pr cela espace disque [ par konik ] y a t'il un moyen simple de vérifier avant de créer un fichier sur disque qu'il y a assez de place.Le fichier doit être créer dynamiquement et peux fa espace utilisé d'un cd [ par mniajnaa ] bonjour tout le monde je cherche une api qui retourne l'espace utilisé d'un cd plate forme:visual c++windows xpmerci Espace disque en c/c++ [ par cyber007 ] Salut tout le monde, bon voilà j'aimerais savoir comment faire un programme fonctionnant par commande MS-DOS et m'affichant a son lancement l'espace d Espace libre d'un DD à distance [ par Elfus ] Bonjour à tous :) J'aimerai pouvoir connaître l'espace disponible sur un disque dur à distance. L'équivalent d'un GetDiskFreeSpace mais pas en local Passage d'une lettre en paramètre [ par ipeteivince ] SalutVoila, je veux ecrire un soft qui me donne la taille d'un lecteur (disque)Je veux pourvoir l'apeller de la facon suivante:disquespace c //renvoie Bloquer l'accès à un fichier utilisé [ par furtivefox ] J'ai une application qui écrit des informations dans un fichier, et je désirerai que ce fichier soit en lecture seule pour tous les utilisateurs/progr API window enregistrement fenetre sur disque C [ par ropars ] Je cherche l'instruction API window qui enregistre une fenetre window sur le disque C sous forme de fichier bmp. en quelque sorte l'inverse de la fonc précisions sur les transformations dans l'espace [ par jcloupgarou ] Bonjour,Dans le plan, une homothetie de rapport -1 et de centre l'origine peut se rapporter à une rotation de meme centre et d'angle pi. Il semble que GetLogicalDrives [ par deck_bsd ] Bonjour,Voila je voudrai récupérer tous les disque dur présent sur un pc avec une autre fonction que FindFirstVolume qui me parait moin rapide que Get


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales