Etude du script search.vbs

 

 

 

 

 

Le script search.vbs est l'un des exemples les plus significatifs de l'intérêt des langages de script. En effet, ceux-ci, lorsqu'ils sont exécutés dans une fenêtre de commande, s'affranchissent des affichages sophistiqués à base de boîtes et autres graphismes complexes. De plus, un script permet d'accéder directement et uniquement à la ou aux fonctionnalités souhaitées, alors que les fonctions préprogrammées de Windows font tout, y compris 90% de choses dont on n'a pas obligatoirement besoin.

 

Le script search.vbs recherche les occurrences d'un ou de plusieurs fichiers sur tous les disques d'un PC avec Windows XP ou 7, dans la mesure où le service d'indexation Windows Search tourne et a effectivement indexé tous ces disques.

 

Votre serviteur a sur son PC trois disques pour un total de 381 Go et 581 000 fichiers indexés à ce jour (rappelons en passant que le répertoire C:\Windows n'est pas indexé par défaut).

 

Comme le montre l'image ci-dessus, les accès à la base de données d'indexation de Windows Search sont mis en cache. C'est pourquoi la premère recherche a duré 12 secondes, et la deuxième, identique, n'a duré que 1,25 seconde.

 

Comment accéder avec VBScript à la base de données d'indexation de Windows Search ?

 

C'est ce que nous allons voir maintenant.

 

Pour télécharger le source de search.vbs, cliquer ici (clic droit > enregistrer la cible du lien sous).

Pour afficher dans une nouvelle fenêtre ce source avec ses lignes numérotées, cliquer là.

 

 

Ligne 19

Toutes les variables et constantes doivent être définies.

 

Lignes 21 à 25

Déclaration des variables et constantes.

 

Lignes 27 à 30

Initialisation d'éléments dont on testera la valeur plus loin

 

Lignes 32 à 56

Traitement du passage des paramètres. Ligne 48 : s'il y a deux paramètres sur la ligne de commande, le 2e ne peut être que le qualificatif Quiet "-q" qui supprime la liste des fichiers et permet de n'avoir que le total de la recherche.

 

Ligne 58

On obtient le premier paramètre, la spécification de la recherche (wildcards autorisés).

 

Lignes 60 à 62

Wildcard sur l'extension, notre cible est donc tous les fichiers portant le nom passé en paramètre, quelque soit l'extension. On indique donc à la requête de recherche que sa clé sera System.FileName.

 

Lignes 64 à 66

Wildcard sur le nom, notre cible est donc tous les fichiers portant l'extension passée en paramètre, quelque soit le nom. On indique donc à la requête de recherche que sa clé sera System.Extension.

 

Ligne 69

Sinon, on indique à la requêtre de recherche que sa clé sera System.ParsingName, c'est-à-dire le nom complet.

 

Ligne 72

On démarre un compteur de secondes depuis 00:00:00 aux fins de statistiques.

 

Lignes 74 à 80

Connexion et ouverture de la base de données de Windows Search.

 

Lignes 82 à 84

Exécution de la requête, triée par nom de fichiers.

 

Lignes 86 à 104

Lecture des données. Ligne 92 : test du booléen blnQuiet pour affichage ou non des résultats. Ligne 98 : ajout du texte [folder] à titre d'information. Ligne 101 : incrémentation d'un compteur. Ligne 102 :  passage à la donnée suivante.

 

Ligne 106

Arrêt du compteur. En fait, on mémorise de nouveau le nombre de secondes depuis 00:00:00 et on fera la différence plus loin.

 

Lignes 108 et 109

Affichage du résultat. Ligne 109 : la fonction GetNrOfIndexedFiles permet de récupérer le nombre de fichiers indexés dans la base via le code des lignes 113 à 128.

 

Voilà.