Bonjour à tous,
J'ai développé un programme de sauvegarde de fichiers et pour le rapport de sauvegarde, j'ai besoin d'avoir une fonction équivalente à DirGetSize() mais pour laquelle je puisse définir une extension pour ne comparer que les fichiers dont les extensions correspondent à ce qui a été demandé pour la sauvegarde.
Exemple :
Sauvegarde de c:\tmp\*.doc vers c:\tmp2
Si on prend cet exemple, dans mon rapport, je veux afficher la taille et le nombre des fichiers .doc sur la source (c:\tmp) et sur la destination après sauvegarde (c:\tmp2 ) pour vérifier que la sauvegarde s'est bien déroulée.
J'ai développé la fonction suivante :
► Afficher le texte
Code : Tout sélectionner
#include<FileListToArray3.au3>
#include <Array.au3>
$timer1=TimerInit()
$tab1=f_DirGetSizeAvecExt(@MyDocumentsDir,"*.*")
$delta1=TimerDiff($timer1)/1000
$timer2=TimerInit()
$tab2=DirGetSize(@MyDocumentsDir,1)
$delta2=TimerDiff($timer2)/1000
ConsoleWrite("Taille :" & @TAB & $tab1[0] & " = " & $tab2[0] & @CRLF)
ConsoleWrite("Nb fichiers :" & @TAB & $tab1[1] & " = " & $tab2[1] & @CRLF)
ConsoleWrite("Nb sous rép :" & @TAB & $tab1[2] & " = " & $tab2[2] & @CRLF)
ConsoleWrite("Durée :" & @TAB & $delta1 & " = " & $delta2 & @CRLF)
Func f_DirGetSizeAvecExt($DGSAE_rep,$DGSAE_ext)
; Taille
$DGSAE_fichier_tab = _FileListToArray3 ($DGSAE_rep,$DGSAE_ext, 1, 1, 1,"")
; Raz taille
$DGSAE_taille=0
; Boucle fichiers pour taille
For $i=1 to UBound($DGSAE_fichier_tab)-1
$DGSAE_taille=$DGSAE_taille+FileGetSize($DGSAE_fichier_tab[$i])
Next
; Nb fichiers
$DGSAE_nbfichiers=UBound($DGSAE_fichier_tab)-1
; Récup sous rép
$DGSAE_rep_tab = _FileListToArray3 ($DGSAE_rep, "*", 2, 1, 0,"")
; Nb sous rép
$DGSAE_nb_rep=UBound($DGSAE_rep_tab)-1
; Préparation tableau return
$DGSAE_tab=$DGSAE_taille& "|" & $DGSAE_nbfichiers & "|" & $DGSAE_nb_rep
; Création tableau
$DGSAE_tab=StringSplit($DGSAE_tab,"|")
; Suppression ligne 0 pour correspondre au retour de DirGetSize
_ArrayDelete($DGSAE_tab,0)
Return $DGSAE_tab
EndFunc
J'ai utilisé _FileListToArray3() car c'est la seule fonction de recherche (
http://autoitscript.fr/forum/viewtopic.php?f=6&t=479) qui me sort la même chose que la fonction DirGetSize().
Par contre, j'ai des temps de recherche (Ex. : C:\) qui sont parfois 24 x plus longs avec ma fonction (boucle d'addition des taille oblige
Auriez-vous une idée pour l'optimiser ?
Merci d'avance.
Amicalement.
BM