Page 1 sur 1

[Func] Recherche de fichiers et de dossiers.

Posté : dim. 16 nov. 2008 16:35
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()

.

Fonction _FileListToArray3()

Posté : jeu. 16 avr. 2009 21:49
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.

Fonction _FileListToArrayEX()

Posté : mer. 05 août 2009 11:55
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.

Fonction _FileListToArrayXT()

Posté : mer. 05 août 2009 12:37
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.


.

Fonction _FileListToArrayNT()

Posté : mer. 08 sept. 2010 21:46
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'

.

Fonction _RecFileListToArray()

Posté : mer. 09 mars 2011 01:56
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.


.

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

Posté : dim. 20 nov. 2011 21:52
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:

.

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

Posté : dim. 20 nov. 2011 21:53
par Tlem
Pour toutes questions ou commentaires, merci d'utiliser le forum d'aide générale.

.