[Func] Recherche de fichiers et de dossiers.

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Verrouillé
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[Func] Recherche de fichiers et de dossiers.

#1

Message par Tlem »

Si vous cherchez à récupérer une liste de fichiers/dossiers, voici quelques fonctions toutes indiquées, et très facile d'utilisation. Voir les fichiers UDF joints aux messages.
** Lire le NB de la fonction _FileListToArrayNT en cas de problème de suppression de sous répertoires.

[Edition du 16/11/2008] : Mise à jour du sujet avec la nouvelle fonction FileListToArray3
  • Ancien UDF _FileListToArrayNew2h.au3 Téléchargé 118 fois
[Edition du 16/04/2009] : Mise à jour du sujet avec la nouvelle fonction _FileListToArrayEX

[Edition du 05/08/2009] : Mise à jour du sujet avec la nouvelle fonction _FileListToArrayXT
Réorganisation par séparation des UDFs dans un message individuel.
  • UDF FileListToArray3.au3 Téléchargé 262 fois
  • UDF FileListToArrayEX.au3 Téléchargé 86 fois
[Edition du 14/08/2010] : Mise à jour du sujet avec la nouvelle fonction _FileListToArrayNT

[Edition du 09/03/2011] : Mise à jour du sujet avec la nouvelle fonction _RecFileListToArray()

[Edition du 01/04/2011] : Mise à jour de la fonction _RecFileListToArray()

[Edition du 20/11/2011] : Mise à jour du sujet avec une version différente de la fonction _FileListToArrayEx()

.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Fonction _FileListToArray3()

#2

Message par Tlem »

Description de la fonction :

Code : Tout sélectionner

_FileListToArray3($s_Path, [$s_Filter = "*", [$i_Flag = 0, [$i_Recurse = 0, [$i_BaseDir = 1, [$s_Exclude = "", [$i_Options = 0]]]]]])
$sPath = Chemin de recherche
$sFilter = Filtre de recherche (*.au3 ou Script?.au3 ...)
$iFlag = 0=Retourne fichier et répertoire, 1=Retourne que les fichiers, 2=Retourne que les répertoires.
$iRecurse = Recherche récursive (0=Non 1=Oui)
$iBaseDir = Inclus le chemin de base (0=Non 1=Oui)
$sExclude = Liste des exclusions, séparées par le caractère '|' (Alt Gr + 6).
$i_Options = Permet de supprimer les fichiers dupliqués.

Lien d'origine : http://www.autoitscript.com/forum/index ... opic=49396

Utilisez la fonction comme ceci :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArray3.au3>

$ar_Array = _FileListToArray3 ("c:\", "*.odt", 1, 1, 1,"Temp|TMP")
_ArrayDisplay($ar_Array, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
Fichiers joints
FileListToArray3.au3
(27.41 Kio) Téléchargé 2368 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Fonction _FileListToArrayEX()

#3

Message par Tlem »

Description de la fonction :

Code : Tout sélectionner

_FileListToArrayEx($sPath, [$sFilter = '*.*', [$iFlag = 0, [$sExclude = '', [$iRecurse = False]]]])
$sPath = Chemin de recherche
$sFilter = Filtre de recherche (*.au3 ou Script?.au3 ...)
$iFlag = 0=Retourne fichier et répertoire, 1=Retourne que les fichiers, 2=Retourne que les répertoires.
$sExclude = Liste des exclusions, séparées par le caractère '|' (Alt Gr + 6).
$iRecurse = Recherche récursive (0=Non 1=Oui)

Lien d'origine : http://www.autoitscript.com/forum/index ... opic=33930
Voici comment l'utiliser (il y à une légère différence par rapport à la précédente) :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayEx.au3>

$ar_Array = _FileListToArrayEx ("c:\", "*.odt", 0, "Temp", True)
_ArrayDisplay($ar_Array, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
Après quelques tests, il s'avère que celle-ci est pratiquement 4 fois plus rapide que _FileListToArray3. :shock:
Par contre, elle fait appel à la commande DIR du DOS et donc malgré la conversion des caractères OEM => ANSI, il peut subsister quelques problèmes sous d'autres langues.
Fichiers joints
FileListToArrayEx.au3
(6.51 Kio) Téléchargé 1614 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Fonction _FileListToArrayXT()

#4

Message par Tlem »

Description de la fonction :

Code : Tout sélectionner

_FileListToArrayXT([$sPath = @ScriptDir, [$sFilter = "*", [$iRetItemType = 0, [$iRetPathType = 0, [$bRecursive = False, [$sExclude = "", [$iRetFormat = 1]]]]]]])
$sPath : Chemin de recherche
$sFilter : Filtres de recherches (multiples filtres acceptés - caractères génériques et multi-fichiers séparés par un point virgule)
$iRetItemType : 0 = Retourne fichier et répertoire (défaut), 1 = Retourne que les fichiers, 2 = Retourne que les répertoires.
$iRetPathType : Format des éléments renvoyés : 0 = Seulement le nom fichier/dossier (défaut), 1 = Chemin relatif, 2 = Chemin complet
$bRecursive : Recherche récursive : False = Non (défaut), True = Oui
$sExclude : Liste des exclusions, séparées par un point virgule.
$iRetFormat : Format de renvoi du résultat. 0 = Tableau base 0, 1 = Tableau base 1 (défaut), 2 = Chaîne (délimitée par "|")

Lien d'origine : http://www.autoitscript.com/forum/index ... t&p=706937

Voici comment l'utiliser :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayXT.au3>

$ar_Array = _FileListToArrayXT ("c:\", "*.odt;*.doc", 0, 2, True, "Temp")
_ArrayDisplay($ar_Array, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
Cette fonction offre comme vous pouvez le constater, une multitude d'options, tout en étant plus rapide que la fonction FileListToArray ainsi que les fonctions présentées précédemment.
Par contre, vous devrez impérativement utiliser une version de AutoIt supérieure ou égale à la version 3.3.1.1.


.
Fichiers joints
FileListToArrayXT.au3
(15.82 Kio) Téléchargé 1717 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Fonction _FileListToArrayNT()

#5

Message par Tlem »

Description de la fonction :

Code : Tout sélectionner

_FileListToArrayNT([$sPath = @ScriptDir, [$sFilter = "*", [$iSearchType = 0, [$iPathType = 0, [$bRecursive = False, [$sExclude = "", [$iRetFormat = 1]]]]]]])
$sPath : Chemin de recherche
$sFilter : Filtres de recherches (multiples filtres acceptés - caractères génériques et multi-fichiers séparés par un point virgule)
$iSearchType : 0 = Retourne fichier et répertoire (défaut), 1 = Retourne que les fichiers, 2 = Retourne que les répertoires.
$iPathType : Format des éléments renvoyés : 0 = Seulement le nom fichier/dossier (défaut), 1 = Chemin relatif, 2 = Chemin complet
$bRecursive : Recherche récursive : False = Non (défaut), True = Oui
$sExclude : Liste des exclusions, séparées par un point virgule.
$iRetFormat : Format de renvoi du résultat. 0 = Tableau base 0, 1 = Tableau base 1 (défaut), 2 = Chaîne (délimitée par "|")

Lien d'origine : http://www.autoitscript.com/forum/index ... t&p=702862

Voici comment l'utiliser :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayNT.au3>

$ar_Array = _FileListToArrayNT ("c:\", "*.odt;*.doc", 0, 2, True, "Temp")
_ArrayDisplay($ar_Array, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
Comme vous pouvez le constater, cette fonction est similaire à la fonction _FileListToArrayXT.

NB :
Après quelques essais divers, il s'avère que cette fonction ne présente pas d'effet secondaire comme les fonctions décrites précédemment.
En effet, si vous utilisez une des fonctions précédente pour supprimer une liste de répertoires obtenu de manière récursive, vous remarquerez que ces dossiers ne peuvent être supprimés la première fois !!!
La fonction _FileListToArrayNT ne présente pas ce dysfonctionnement et permet la suppression de ces dossier sans contrainte.

* N'oubliez pas que vous devrez impérativement utiliser une version de AutoIt supérieure ou égale à la version 3.3.1.1.

Edition du 09/03/2011 :
Effet secondaire relevé : Cette fonction retourne les fichiers du genre MonProgramme.exe_old pour un filtre du genre '*.exe'

.
Fichiers joints
FileListToArrayNT.au3
(9.94 Kio) Téléchargé 1539 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Fonction _RecFileListToArray()

#6

Message par Tlem »

* Attention : Cette fonction à un comportement spécifique lors d'une recherche récursive pour fichiers + dossiers.
L'auteur de la fonction, avait besoin d'avoir la liste des fichiers correspondant à la recherche + la liste de tous les sous-dossiers.


Description de la fonction :

Code : Tout sélectionner

_RecFileListToArray($sInitialPath, $sInclude_List = "*", $iReturn = 0, $iRecur = 0, $iSort = 0, $iReturnPath = 1, $sExclude_List = "", $sExclude_List_Folder = "")
$sInitialPath : Chemin de recherche
$sInclude_List : Filtres de recherches (multiples filtres acceptés - caractères génériques et multi-fichiers séparés par un point virgule)
$iReturn : 0 = Retourne fichier et répertoire (défaut), 1 = Retourne que les fichiers, 2 = Retourne que les répertoires.
$iRecur : Recherche récursive : False = Non (défaut), True = Oui
$iSort : Option de tri par ordre alphabétique : 0 = Non trié (défaut), 1 = Trié.
$iReturnPath : Format des éléments renvoyés : 0 = Seulement le nom fichier/dossier (défaut), 1 = Chemin relatif, 2 = Chemin complet
$sExclude_List : Liste des exclusions, séparées par un point virgule.
$sExclude_List_Folder : Optionel: Utilisé seulement si $iReturn = 0 ET $iRecur = 1 pour exclure les dossiers correspondant au filtre.

Lien d'origine : http://www.autoitscript.com/forum/topic ... 31-mar-11/

Voici comment l'utiliser :

Code : Tout sélectionner

#include<Array.au3>
#include"RecFileListToArray.au3"

$ar_Array = _RecFileListToArray ("c:\", "*.odt;*.doc", 0, 0, 2, 1, "Temp")
_ArrayDisplay($ar_Array, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
Comme vous pouvez le constater, cette fonction est similaire aux autres fonctions ci-dessus.

NB :
Cette fonction semble encore plus rapide que _FileListToArrayNT() (selon les options) et sans l'effet secondaire du filtrage des fichiers après l'extension (*.exe => MonProgramme.exe_old).
Le problème des dossiers occupés n'a pas été testé.

* N'oubliez pas que vous devrez impérativement utiliser une version de AutoIt supérieure ou égale à la version 3.3.1.1.

RecFileListToArray.au3 du 6 mars 2011 téléchargée 37 fois.
RecFileListToArray.au3 du 14 mars 2011 téléchargée 73 fois.
RecFileListToArray.au3 du 22 mai 2011 téléchargée 198 fois.
RecFileListToArray.au3 du 18 Octobre 2011 téléchargée 181 fois.


.
Fichiers joints
RecFileListToArray.au3
Version du 03 Juillet 2013
(30.49 Kio) Téléchargé 1082 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] Recherche de fichiers et de dossiers.

#7

Message par Tlem »

Description de la fonction :

Code : Tout sélectionner

_FileListToArrayEx($sPath , $sFilter = "*" , $iFlag = 0 , $sSDir = 0)
$sPath : Chemin de recherche
$sFilter : Filtres de recherches (Groupe de filtres multiple tel que "*.png|*.jpg|*.bmp")
$iFlag : 0 = Retourne fichier et répertoire (défaut), 1 = Retourne que les fichiers, 2 = Retourne que les répertoires.
$sSDir : Recherche récursive et chemin complet : 0 = Recherche dans le dossier courant (défaut), 1 = Recherche récursive, 2 = Recherche récursive + retour du chemin complet.

Lien d'origine : http://www.autoitscript.com/forum/topic ... ttoarrayex

Voici comment l'utiliser :

Code : Tout sélectionner

#include<Array.au3>
#include"_FileListToArrayEx.au3"

$ar_Array = _FileListToArrayEx ("c:\", "*.odt", 1, 2)
_ArrayDisplay($ar_Array, "Liste fichier")  ; Ceci est facultatif, c'est juste pour afficher la liste des fichiers.
Cette fonction est une version modifiée de _FileListToArray(), qui prend en compte la recherche récursive.

NB :
Cette fonction présente moins de paramètres que les dernières fonctions ci-dessus, mais semble encore plus rapide et ne présente pas l'effet secondaire du filtrage des fichiers après l'extension (*.exe => MonProgramme.exe_old). Si votre but est de faire une recherche simple, alors cette fonction est faite pour vous.
Le problème des dossiers occupés n'a pas été testé.

* N'oubliez pas que vous devrez impérativement utiliser une version de AutoIt supérieure ou égale à la version 3.3.1.1.

Edit : Mise à jour de la fonction du 21/01/2011 pour prendre en compte les filtres multiples de recherche de fichiers.

Edit : Mise à jour de la fonction (v2) du 09/06/2013 pour retourner le chemin complet même sur une recherche non récursive.

Edit : Mise à jour de la fonction (v3) du 13/06/2013 pour prendre en compte la limitation de Windows sur les chemins de plus de 260 caractères.

Edit : Mise à jour de la fonction (v3) du 29/10/2013 pour corriger quelques bugs introduit par la modification précédente. Entre autre ne fonctionnait plus avec des chemins réseau. :oops:

.
Fichiers joints
_FileListToArrayEx_v3.au3
Ajout de la prise en charge des chemins de plus de 260 caractères sur des chemins locaux.
(4.9 Kio) Téléchargé 1497 fois
_FileListToArrayEx_v2.au3
Retourne le chemin complet sur recherche non récursive
(4.56 Kio) Téléchargé 882 fois
_FileListToArrayEx.au3
(4.27 Kio) Téléchargé 1491 fois
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11772
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] Recherche de fichiers et de dossiers.

#8

Message par Tlem »

Pour toutes questions ou commentaires, merci d'utiliser le forum d'aide générale.

.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Verrouillé