Re: taille de dossiers

Posté par Aqualung le 31/12/2006 16:20:04
Bonjour,
voici un exemple de fonction pour le calcul de la taille d'un répertoire, elle peut être adaptée pour calculer le nombre de fichiers.

// Description des paramètres d'entrée/sortie de 'CalculTailleVbs' :
//
// Syntaxe :
//[ <Résultat> = ] CalculTailleVbs (<P_NomRep>[, <P_Datcre>[, <P_DatMod>[, <P_DatAcc>[, <P_FicVerif>[, <P_TailleFic>]]]]])
//
// Paramètres :
// 	P_NomRep : <Nom du répertoire>
// 	P_Datcre : <Date de création (renvoyée)>
// 	P_DatMod : <Date de modification (renvoyée)>
// 	P_DatAcc : <Date accès (Renvoyée)>
// 	P_FicVerif : <Fichier dont l'existence doit être vérifiée>
// 	P_TailleFic : <Taille du fichier à vérifier>
// Valeur de retour :
// 	réel : <Taille du répertoire>
// Notes :
// Calcul de la taille d'un répertoire par OLE VBS
// Cette procédure peut en plus calculer la taille d'un fichier particulier
// Remarque :
// le format date en entier de Windev est 	un entier long qui correspond au nombre de jours écoulés 
//											depuis le 1er janvier 1800 plus 1 
// le format date en entier de windows est	un entier long qui correspond au nombre de jours écoulés
//											depuis le 1er janvier 1900
// date Windows et Windev
// Exemple :
// Indiquez ici un exemple d'utilisation.
//
FONCTION GLOBALE CalculTailleVbs(P_NomRep,P_Datcre="",P_DatMod="",P_DatAcc="",P_FicVerif="",P_TailleFic=0)
L_Fso est un objet OLE "Scripting.FileSystemObject"
L_Datcre, L_DatAcc, L_Datmod, L_Datcre_A, L_DatAcc_A, L_Datmod_A sont chaîne
L_Datcre_N, L_DatAcc_N, L_Datmod_n sont entier 
L_DateWin_n est entier 
L_DateWin  est chaîne="19000101"
L_Repert est un objet OLE dynamique
L_Taille est réel 
SI fRep(P_Nomrep+"\*.*")<>"" OU fRep(P_Nomrep+"\*.*",frRépertoire)<>"" ALORS
	L_Repert=L_Fso>>GetFolder(P_NomRep)
	SI L_Repert>>Attributes()<>22 ALORS
		L_DateWin_n=DateVersEntier(L_DateWin)-2
		L_Taille=L_Repert>>size()
		// Date de création
		L_Datcre=L_Repert>>DateCreated()
		L_Datcre_A=ExtraitChaîne(L_Datcre,1,".")
		L_Datcre_n=Val(L_Datcre_A)+L_DateWin_n
		P_Datcre=EntierVersDate(L_Datcre_n)
		// Date de modification
		L_DatMod=L_Repert>>DateLastModified()
		L_DatMod_A=ExtraitChaîne(L_DatMod,1,".")
		L_DatMod_n=Val(L_DatMod_A)+L_DateWin_n
		P_DatMod=EntierVersDate(L_DatMod_n)
		// Date dernier accès
		L_DatAcc=L_Repert>>DateLastAccessed()
		L_DatAcc_A=ExtraitChaîne(L_DatAcc,1,".")
		L_DatAcc_n=Val(L_DatAcc_A)+L_DateWin_n
		P_DatAcc=EntierVersDate(L_DatAcc_n)
		SI SansEspace(P_Ficverif)<>"" ALORS
			SI fRep(P_Nomrep+"\"+P_Ficverif)<>"" ALORS
				P_Taillefic+=fTaille(P_Nomrep+"\"+P_Ficverif)
			FIN
		FIN
	SINON
		L_Taille=0
	FIN
	libérer L_Repert
FIN
RENVOYER L_Taille


Pour le partage, je ne l'ai jamais fait.

Bon dev.

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=4859&post_id=20147