Un explorateur de fichiers sur mesure


Le script proposé au téléchargement permet d'afficher dans une page html la liste des répertoires et fichiers du disque dur de l'utilisateur.
En cliquant sur les répertoires, on fait apparaitre leur contenu.
En cliquant sur les fichiers, on les ouvre.

Comment ça marche ?

En utilisant un objet Scripting.FileSystemObject, il est très facile d'établir la liste de tous les fichiers et sous-répertoires d'un répertoire dont on connait l'adresse complète (cliquez ici pour quelques explications sur l'utilisation de Scripting.FileSystemObject en VB)

En utilisant Document.Write, on peut afficher cette liste dans une page html.

Le problème consiste à prendre en compte de manière dynamique l'adresse du répertoire en cours d'exploration, de manière à pouvoir l'utiliser pour orienter les liens des sous répertoires.
La solution passe par la transmission de l'adresse du répertoire sous forme de chaine dans l'URL du fichier html, par exemple sous la forme nom_fichier.html?adr=adresse_répertoire.
L'adresse est récupérée en utilisant document.location.search (et en traitant la chaine récupérée comme du texte) :
nomfich=right(document.location.search,len(document.location.search)-5)
L'URL de la page html explorant le répertoire toto sera appelée par
document.location.pathname & "?adr=" & ssrep.path

Le texte simplifié du fichier html contenant le script vbs :

<HTML><BODY>
<SCRIPT LANGUAGE='vbs'>

nomfich=right(document.location.search,len(document.location.search)-5)
nomfich=unescape(nomfich)
Set fs = CreateObject("Scripting.FileSystemObject")
Set rep=fs.getFolder(nomfich)
document.write "Contenu du répertoire " & rep.path

for each ssrep in rep.subfolders
document.write "<BR><A HREF='" & document.location.pathname & "?adr=" & _
    escape(ssrep.path) & "'>" & ssrep.name & "</A>"
next

for each fich in rep.files
document.write "<BR><A HREF='" & fich.path & "'>" & fich.name & "</A>"
next

set rep=nothing
set fs=nothing
</SCRIPT>
</BODY></HTML>


Dans ce texte un peu édulcoré, on notera l'utilisation de escape pour coder le chemin d'accès au répertoire avant de le transmettre à l'url, et le décodage par unescape.
- A chaque nom de fichier est associé un lien pointant vers ce fichier.
- A chaque nom de répertoire est associé un lien pointant vers la page html en cours (celle qui contient le script) complètée de la chaine précisant l'adresse complete (codée) du répertoire :
document.location.pathname & "?adr=" & escape(ssrep.path).

Pour utiliser ce code HTML + VBScript, il faut le copier dans notepad, enregistrer sous c:\zaza.html et ouvrir dans Internet Explorer l'url file:///c:/zaza.html?adr=c:\

Quelques lignes de code supplémentaires permettent de simplifier la procédure d'ouverture du fichier (ouverture normale du fichier html), d'obtenir une présentation plus jolie, et de donner la possibilité de revenir au répertoire parent :
cliquez ici pour voir le code complet.
cliquez ici pour télécharger le fichier .html (zippé)

Plutôt que de télécharger le fichier html et de l'enregistrer sur votre disque dur, vous pouvez télécharger un vbs qui, à l'ouverture, va créer le fichier html sur votre disque dur (cliquez ici)