Obtient les fichiers et/ou les sous-r�pertoires d'un r�pertoire avec en option une r�cursivit� de profondeur donn�e et un r�sultat tri�
#include <File.au3>
_FileListToArrayRec ( $sFilePath [, $sMask = "*" [, $iReturn = $FLTAR_FILESFOLDERS [, $iRecur = $FLTAR_NORECUR [, $iSort = $FLTAR_NOSORT [, $iReturnPath = $FLTAR_RELPATH]]]]] )
$sFilePath | R�pertoire initial utilis� pour g�n�rer la liste des fichiers. Si le chemin se termine par '\' alors les r�pertoires seront retourn�s avec '\' � la fin. Si la longueur du chemin > 260 caract�res, le chemin sera pr�fix� par "\\?\" - les chemins retourn�s ne seront pas affect�s |
$sMask | [optionnel] Filtre pour le r�sultat. Plusieurs filtres doivent �tre s�par�es par ";" Utilisez "|" pour s�parer les 3 champss possibles de filtres : "Include|Exclude|Exclude_Folders" Include = Fichiers/R�pertoires � inclure (par d�faut = "*" [tous]) Exclude = Fichiers/R�pertoires � exclure (par d�faut = "" [aucun]) Exclude_Folders = uniquement utilis� si $iRecur = 1 AND $iReturn <> 2 pour exclure des r�pertoires d�finis (par d�faut = "" [aucun]) |
$iReturn | [optionnel] Sp�cifie s'il faut retourner les fichiers, les r�pertoires ou les deux et omettre ceux qui ont certains attributs $FLTAR_FILESFOLDERS (0) - (par d�faut) Retourne � la fois les fichiers et les r�pertoires $FLTAR_FILES (1) - Retourne uniquement les fichiers $FLTAR_FOLDERS (2) - Retourne uniquement les r�pertoires Ajoute un ou plusieurs des �l�ments suivants � $iReturn pour omettre les fichiers/r�pertoires avec des attributs donn�s + $FLTAR_NOHIDDEN (4) - fichiers et r�pertoires cach�s + $FLTAR_NOSYSTEM (8) - fichiers et r�pertoires syst�me + $FLTAR_NOLINK (16) - r�pertoires li�s/joints |
$iRecur | [optionnel] Indique si la recherche sera r�cursive dans les sous-r�pertoires et jusqu'� quel niveau de profondeur $FLTAR_NORECUR (0) - Ne recherche pas dans les sous-r�pertoires (par d�faut) $FLTAR_RECUR (1) - Recherche dans tous les sous-r�pertoires (r�cursivit� illimit�e) Entier n�gatif - Recherche dans les sous-r�pertoires de profondeur sp�cifi�e |
$iSort | [optionnel] Trie les r�sultats par ordre alphab�tique et par profondeur $FLTAR_NOSORT (0) - Pas de tri (par d�faut) $FLTAR_SORT (1) - Avec tri $FLTAR_FASTSORT (2) - Tri avec l'algorithme le plus rapide (ce qui suppose que les fichiers dans les r�pertoires sont retourn�s tri�s - n�cessite NTFS et ce n'est pas garanti) |
$iReturnPath | [optionnel] Indique le chemin d'affichage des r�sultats: $FLTAR_NOPATH (0) - Uniquement le nom des fichiers/r�pertoires $FLTAR_RELPATH (1) - Relativement au chemin initial (par d�faut) $FLTAR_FULLPATH (2) - Chemin complet inclus |
Succ�s: | Retourne un tableau de dimension 1 constitu� comme il suit: [0] = Nombre de Fichiers/R�pertoires retourn�s [1] = 1er Fichier/R�pertoire [2] = 2e Fichier/R�pertoire ... [n] = n-i�me Fichier/R�pertoire |
�chec: | Retourne une cha�ne vide, @error = 1 et @extended comme ci-dessous: 1 - Chemin introuvable ou non valide 2 - Param�tre Include non valide 3 - Param�tre Exclude non valide 4 - Param�tre Exclude_Folders non valide 5 - Param�tre $iReturn non valide 6 - Param�tre $iRecur non valide 7 - Param�tre $iSort non valide 8 - Param�tre $iReturnPath non valide 9 - Aucun Fichier/R�pertoire trouv� |
Si les fichiers et/ou r�pertoires � retourner sont tous dans le m�me r�pertoire et sont d�finis par un seul filtre simple, la fonction _FileListToArray() a des chances d'�tre beaucoup plus rapide.
Logique de Inclure/Exclure/Exclude_Folders:
-Recherche non-r�cursive:
Inclure/Exclure: Fichiers et/ou r�pertoires
Exclude_Folders: Ignor�s
-Recherche r�cursive:
Inclure/Exclure:
$iReturn = $FLTAR_FILESFOLDERS/$FLTAR_FILES - Uniquement les fichiers
$iReturn = $FLTAR_FOLDERS - Uniquement les r�pertoires
Exclude_Folders :
$iReturn = $FLTAR_FILESFOLDERS/$FLTAR_FILES - Uniquement les r�pertoires
$iReturn = $FLTAR_FOLDERS - Ignor�
Le tri des r�sultats augmentera de fa�on significative le temps n�cessaire � la fonction pour retourner un tableau
Malgr� son nom, cette fonction est it�rative, pas r�cursive. Les constantes sont d�finies dans FileConstants.au3
#include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> Example() Func Example() Local $sAutoItDir = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", Default, -1)) If StringRight($sAutoItDir, 5) = "beta\" Then $sAutoItDir = StringTrimRight($sAutoItDir, 5) EndIf ConsoleWrite($sAutoItDir & @CRLF) ; Une liste tri�e de tous les fichiers et r�pertoires dans le dossier de l'installation AutoIt Local $aArray = _FileListToArrayRec($sAutoItDir, "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "Arbre tri�") ; Et maintenant, en ignorant le "Inclure" des r�pertoires $aArray = _FileListToArrayRec($sAutoItDir, "*||include", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "Pas de r�pertoire 'Include'") ; Une liste tri�e de tout, mais les fichiers .exe dans le dossier \AutoIt3 $aArray = _FileListToArrayRec($sAutoItDir, "*|*.exe", $FLTAR_FILES, $FLTAR_NORECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "Pas de fichier .EXE") ; Et voici les fichiers .exe que nous avons laiss�s ci-dessus $aArray = _FileListToArrayRec($sAutoItDir, "*.exe", $FLTAR_FILES) _ArrayDisplay($aArray, "Fichiers .EXE") ; Un test pour tous les r�pertoires et les fichiers .exe dans l'arbre des r�pertoires, en omettant les r�pertoires commen�ant par I (Icons et Include) $aArray = _FileListToArrayRec($sAutoItDir, "*.exe||i*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "Recursivit� avec filtre") ; Regardons les fichiers d'ic�nes - mais excluons le r�pertoire "Icons" $aArray = _FileListToArrayRec($sAutoItDir, "*.ico||ic*", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_SORT) If @error Then MsgBox($MB_SYSTEMMODAL, "Ooops!", "Pas de fichier ico trouv�") Else _ArrayDisplay($aArray, "Fichiers ico qui ne sont pas dans le dossier 'Icons'") EndIf ; Et pour montrer que le filtre s'applique aux fichiers ET aux r�pertoires quand non r�cursive $aArray = _FileListToArrayRec($sAutoItDir, "*.exe", $FLTAR_FILESFOLDERS, $FLTAR_NORECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "Pas de r�cursivit� avec filtre") ; Le filtre s'applique �galement aux r�pertoires lors de la recherche r�cursive pour les dossiers $aArray = _FileListToArrayRec($sAutoItDir, "Icons", $FLTAR_FOLDERS, $FLTAR_RECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "R�cursivit� sur les dossiers avec filtre") ; Notez que le param�tre exlude_folder est ignor� lors de la recherche dans les r�pertoires - "Icons" sera exclus mais "Include" sera toujours l� $aArray = _FileListToArrayRec($sAutoItDir, "*|ic*|i*", $FLTAR_FOLDERS, $FLTAR_RECUR, $FLTAR_SORT) _ArrayDisplay($aArray, "'Icons' out - 'Include' in") ; La racine de C:\Windows montre ses r�pertoires cach�s/syst�me $aArray = _FileListToArrayRec("C:\Windows\", "*", $FLTAR_FOLDERS) _ArrayDisplay($aArray, "Affiche les dossiers cach�s") ; La racine de C:\Windows omet ses r�pertoires cach�s/syst�me $aArray = _FileListToArrayRec("C:\Windows\", "*", $FLTAR_FOLDERS + $FLTAR_NOHIDDEN + $FLTAR_NOSYSTEM) _ArrayDisplay($aArray, "Cache les dossiers cach�s") EndFunc ;==>Example