INFORMATIQU'A -- Windows - Explorateur

Imprimer le contenu d'un dossier.


Concernant : [Windows 98]


Comment : Grâce à un script de Windows 98 (ou Windows 95 en option) lancé à partir du menu contextuel de chaque dossier.


Une fonction fait cruellement défaut à Windows : la possibilité d'imprimer la liste des fichiers d'un dossier. L'équivalent de la commande DIR de MsDos, en quelque sorte.

Les possibilités de programmation offertes par Windows 98 via Windows Scripting Host (disponible en option pour Windows 95 sur Internet à l'adresse http://msdn.microsoft.com/scripting/default.htm?/scripting/windowshost/download/) ou sur notre page de téléchargement, permettant néanmoins de traiter ce problème. On peut, par exemple, créer un programme permettant de saisir le chemin d'accès d'un dossier, puis de lister ses fichiers dans un tableaux Excel. Le programme que nous vous proposons va beaucoup plus loin.

D'une part, il s'intégre parfaitement au système et ne nécessite pas l'utilisation de logiciels extérieurs. D'autre part, il liste les fichiers, les sous-dossiers et imprime des statistiques (nombre d'éléments, taille ...).

Pour mettre en oeuvre, téléchargez ou  recopiez le listing ci-après dans le bloc-notes, puis enregistez-le à la racine de votre   disque dur sous le nom Oi102.vbs. Ensuite, lancez l'éditeur de registre (par Démarrer/Exécuter/regedit), puis déroulez l'arborescence jusqu'à la clé HKEY_CLASSES_ROOT\Folder\Shell. Dans la partie droite de l'écran, cliquez avec le bouton droit de la souris, choisissez Nouveau, puis clé, tapez un nom (Oi102, par exemple) et confirmer par [Entrée]. Faites un double clic sur la chaîne (Défaut), et tapez &Imprimer le contenu. Cliquez de nouveau avec le bouton droit de la souris dans la partie droite de l'écran, choisissez Nouveau, puis clé, et saisissez command avant de confirmer. Modofiez de la même façon la chaîne (Défaut) et entrez wscript.exe C:\Oi102.vbs %1.

Vous pouvez alors quittez l'éditeur de registreet tester la nouvelle fonction ainsi ajoutée à Windows. Ouvrez, par exemple, votre disque dur à partir du Poste de travail, cliquez avec le bouton droit de la souris sur le dossier Windows et choisissez la commande Imprimer le contenu.

Remarques: Avant modification de la Base de Registre (BdR), prévoir de sauvegarder celle-ci. Les modifications prennent effet immédiatement.

[Précédente]    Retour en Haut

LISTING   Téléchargez

'Programme principal
'_________________
'Déclaration
Dim element

'Affectations
dossier = Wscript.Arguments(0)

Set shell = Wscript.CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set liste = fs.CreateTextFile("c:\liste.txt", True)
Set Fichiers = fs.GetFolder(dossier).Files
Set sous-dossiers = fs.GetFolder(dossier).Subfolders

'Ecriture de l'en-tête
liste.WriteLine("Contenu du dossier " & dossier)
liste.WriteLine("(le " & FormatDateTime(now(),vlongDate) & " à " & Time&")")
liste.WriteLine(String(66, "_"))
liste.WriteLine()

'Traitement des sous-dossiers
eltype = "dossier"
For Each element in sous_dossiers
    ligne element,eltype
    nbdoss = nbdoss+1
    tailldoss = tailldoss + Element.Size
Next

'Ligne vide de séparation
liste.WriteLine()

'Traitement des fichiers
eltype = "fichiers"
For Each element in fichiers
    ligne element,eltype
    nbfich = nbfich+1
    taillfich = taillfich + element.size
Next

'Ecriture du bas de la liste et des totaux
liste.WriteLine(String(66, "_"))
liste.WriteLine()
liste.WriteLine("Total:")
If nbdoss<>0 Then liste.WriteLine(" " & nbdoss & "dossier(s) : " & Exprime(tailldoss))
liste.WriteLine(" " & nbfich & " fichier(s) : " & Exprime(taillfich))
liste.Close

'Impression de la liste avec Wordpad
shell.Run "wordpad /p c:\liste.txt" , Hide, 1
fs.getfile("c:\liste.txt").Delete

'Sous-programme d'écriture d'une ligne de détail
'--------------------------------------------------------
Sub ligne(element,eltype)
    if eltype="fichier" Then
        nom=Left(element.Name, Len(element.Name)-4)
        ext=" " & Right(element.Name, 3)
    Else
        nom=element.Name
        ext="<Dos>"
    End If

taille = exprime(element.Size)

'Tronquer le nom si trop long
   If Len(nom) > 30 Then nom = left(nom, 27) & "..."

'Ecriture des données nom, extension, taille et date/heure dans 4 colonnes distinctes
    liste.Write(" " & nom & Space(30-Len(nom)))
    liste.Write(" " & ext & Space(5-Len(ext)))
    liste.Write(" " & Space(9-Len(taille))) & taille
    liste.Write(" " & element.DateLastModified)
    liste.WriteLine()
End Sub

'Fonction de convertion de la taille en Ko ou Mo
'-----------------------------------------------------------------
Function Exprime(taille)
    if taille > 1048576 Then '(supérieur à 1 Mo)
        Exprime = CStr(FormatNumber(taille/1048576,2,,,-1)) & " Mo"
    Else '(Inférieure à 1 Mo)
        Exprime = CStr(FormatNumber(taille/1024,0,,,-1)) & " Ko"
End If
End Function

[Précédente]    Retour en Haut
Copyright © 1999 Informatiqu'a - Pascal VILLENEUVE. Tous droits réservés.
Association informatiqu'a  N° 11A7 - Alès - Gard (30) - Sud de France.
Dernière modification : Lundi 15 novembre 1999
.