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).