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