Rechercher un fichier dans un répertoire et de ses sous-répertoires


Comment trouver tous les fichiers qui s'appellent "zaza.xls", ou bien tous les fichiers qui comencent par "zaz", ou bien tous les fichiers word ?

Sous dos, on utilise dir, dans la plupart des applications windows on utilise FileSearch, mais vbs n'offre rien d'équivalent.

Plusieurs solutions sont envisageables, toutes présentant quelques inconvénients :
- on peut utiliser l'objet FileSystemObject pour balayer un à un le contenu de tous les répertoires
- on peut lancer une commande DOS "dir" depuis vbs et récupérer le résultat dans un fichier texte
- ou bien on peut utiliser une application Windows (Word ou mieux Excel) pour lancer FileSearch (voire dir).
Les méthodes 1 et 3 présentent l'inconvénient d'être lourdes ; la troisième nécéssite qu'Excel (ou Word) soit installé sur le poste.
La seconde est nettement plus rapide mais supporte parfois assez mal la présence de caractères spéciaux dans les chemins d'accès des fichiers. Elle dépend en outre de la version de DOS utilisée.



Utilisation de FileSearch sous Excel

Le script proposé crée une instance (cachée) d'Excel, y ouvre un nouveau classeur, y insère une macro VBA de recherche via filesearch dont le résultat est inscrit dans la page Excel, lance ladite macro Excel, récupère dans un tableau la liste des fichiers trouvés (à partir du tableau inscrit par la macro dans la page Excel), puis ferme Excel. Le résultat de la recherche (stocké dans un tableau) est ensuite affiché dans une page html.

cliquez ici pour lancer le script.
cliquez ici pour voir le code (fichier txt).



Utilisation du FileSystemObject

Le script proposé balaie niveau par niveau tous les sous-répertoires à la recherche du fichier dont le nom contient la chaine recherchée.
Le résultat de la recherche est affiché dans une page html.

cliquez ici pour lancer le script.
cliquez ici pour voir le code (fichier txt).



Utilisation de la commande DOS : dir

Le script proposé se contente d'envoyer une commande dir avec les attributs /s (incluant les sous-répertoires et /b (renvoie la liste des fichiers sans autres commentaires) et avec une sortie sur un fichier texte.
Le script lit chaque ligne du fichier texte et les place dans un tableau.
Le résultat de la recherche est affiché dans une page html.
La méthode est très rapide quand un grand nombre de fichiers sont balayés. Elle autorise l'utilisation de caractères Joker (*, ?), comme FileSearch.
Par contre, la sortie dans un fichier texte donne des résultats parfois peu fiables quand les chemins d'accès aux fichiers contiennent des caractères accentués.

cliquez ici pour lancer le script.
cliquez ici pour voir le code (fichier txt).