59
Date de publication : 13/01/2007 Dernière mise à jour : 28/02/2007 Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et des membres du forum VB. Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributions VBScript. Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacter par MP ThierryAIM ou bbil. L'équipe de rédaction de Developpez.com vous remercie pour votre participation passée et à venir.

forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

Embed Size (px)

Citation preview

Page 1: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

Date de publication : 13/01/2007

Dernière mise à jour : 28/02/2007

Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et desmembres du forum VB.Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributionsVBScript.Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacterpar MP ThierryAIM ou bbil.L'équipe de rédaction de Developpez.com vous remercie pour votre participationpassée et à venir.

Page 3: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 3 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

1. Généralités (2) ........................................................................................................................................................................... 42. VB Script (71) ........................................................................................................................................................................... 5

2.1. Généralités (10) .................................................................................................................................................................62.2. Fichiers : le FileSystemObject (27) ................................................................................................................................11

2.2.1. Généralités (2) ........................................................................................................................................................122.2.2. Accès aux Disques (4) ...........................................................................................................................................132.2.3. Accès aux Dossiers/Répertoires (9) .......................................................................................................................152.2.4. Accès aux Fichiers (12) .........................................................................................................................................20

2.3. Applications Externes (5) ............................................................................................................................................... 272.4. Les Fichiers de Script Windows (4) .............................................................................................................................. 292.5. XML (6) ..........................................................................................................................................................................312.6. Base de donnée (1) .........................................................................................................................................................352.7. Manipulation des chaînes de caractères (9) ................................................................................................................... 362.8. Manipulation des dates (3) ............................................................................................................................................. 412.9. Manipuler la base de registre (6) ................................................................................................................................... 42

3. WMI : Windows Management Instrumentation (9) ................................................................................................................ 453.1. Processus : classe Win32_Process (2) ............................................................................................................................463.2. Services : classe Win32_Service (1) .............................................................................................................................. 473.3. Imprimantes : classe Win32_Printer (3) .........................................................................................................................483.4. Réseaux (2) ..................................................................................................................................................................... 50

4. WSH : Windows Scripting Host (15) ..................................................................................................................................... 524.1. Shell (wshShell) (5) ........................................................................................................................................................534.2. Réseau (wshNetwork) (5) ...............................................................................................................................................574.3. Autres (4) ........................................................................................................................................................................ 58

Page 4: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 4 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > Généralités

Où trouver l'aide en ligne pour VBScript ?

Auteurs : omen999 , bbil ,

Télécharger le fichier scd56fr.exe sur le site de Microsoft.

Comment écrire un script VBS ?

Auteurs : ThierryAIM ,

Un script VBS peut être écrit avec n'importe quel éditeur de texte ASCII.Vous pouvez utiliser le bloc-notes ou Wordpad de Windows, ou mieux, un éditeur à coloration syntaxique comme

notepad++ (gratuit et "open source")

Page 5: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 5 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script

Page 6: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 6 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Généralités

Définition

Auteurs : ThierryAIM ,

VBScript (Microsoft Visual Basic Scripting Edition) est un langage de script d'usage général, dérivé de Microsoft VisualBasic.Apparu avec Internet Explorer 3, il est utilisable soit en ligne de commande, soit directement dans l'environnementWindows ou dans la plupart des navigateurs web.

VBScript est un langage interprété, ne nécessitant pas de compilateur spécifique, contrairement aux langages compilés,mais il a besoin d'un interpréteur, capable de comprendre et d'exécuter les instructions contenues dans le script.Installé de base depuis Windows 98, l'interpréteur le plus couramment utilisé dans l'environnement Windows estwscript.exeL'équivalent de wscript.exe pour une exécution en ligne de commande est cscript.exe

Les fichiers de type VBScript ont généralement l'extension .vbs

Comment changer l'interpréteur de script par défaut ?

Auteurs : bbil ,

Deux interpréteurs de script sont disponible sous Windows :

• Wscript : pour le mode graphique• Cscript : pour le mode texte

pour changer l'interpréteur par défaut, on utilise la commande :Pour choisir Wscript :

wscript //H:WScript

Pour choisir Cscript :

wscript //H:CScript

Nota : On préférera utiliser CScript, qui présente l'avantage d'avoir une commande d'affichage "Wscript.Echo" nonbloquante là où WScript utilise une boîte de message (message box) réclamant une action de l'opérateur

Le typage des variables

Auteurs : ThierryAIM ,

Comme dans tous les langages, même si VBScript est très permissif à ce niveau, il est recommandé de déclarer toutesles variables utilisées dans le code.Mais, contrairement aux langages Visual Basic 6 (VB6) ou Visual Basic for Application (VBA), en VBScript, le typagedes variables se fait au moment de l'assignation, et non pas lors de la déclaration.Autrement dit, vous ne devez pas utiliser de déclaration Dim ... As ... , mais simplement Dim ...

Page 7: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 7 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Déclarations correctes :

VBS

Dim iDim MonTextDim toto, titiDim arg1, arg2, arg3

Déclarations incorrectes :

Dim i As IntegerDim MonText As String

Comment programmer une pause dans le code ?

Auteurs : bbil ,

VBS

MsgBox "Appuyer sur OK pour lancer la pause"Wscript.Sleep 2000 ' durée en ms .. 2000 => 2 sMsgBox "2 secondes Plus tard"

Comment interrompre un script ?

Auteurs : Forum ,

La méthode Quit permet de mettre fin à un script immédiatement :

VBS

If MyVar = 0 Then WScript.Quit

Comment obtenir le nom et chemin complet d'un script en cours d'exécution ?

Auteurs : ThierryAIM ,

Affiche le nom et chemin complet du script en cours d'exécution :

VBS

MsgBox WScript.ScriptFullName

Affiche le nom du script en cours d'exécution :

VBS

Page 8: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 8 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBSMsgBox WScript.ScriptName

Comment utiliser les arguments en ligne de commande ?

Auteurs : bbil ,

Grâce à l'objet WshArguments ..créer un fichier msgbox.vbs code :

msgbox.VBS

If wscript.Arguments.length = 2 Then MsgBox wscript.arguments(0),wscript.arguments(1), "FaqVbs"Else wscript.Echo "Nombre d'arguments incorrect" Wscript.Echo "MsgBox Message iType"End if

puis pour l'appel du code exécuter en ligne de commande :

Ligne de commande

MsgBox "Bonjour à tous " 48

Comment utiliser la boîte de dialogue de sélection d'un répertoire ?

Auteurs : bbil , ThierryAIM ,

Avec la méthode BrowseForFolder de l'objet Shell.Application :

VBS

Const RETURNONLYFSDIRS = &H1

Set oShell = CreateObject("Shell.Application")Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\")If oFolder is Nothing Then MsgBox "Abandon opérateur",vbCriticalElse Set oFolderItem = oFolder.Self MsgBox oFolderItem.pathEnd If

Set oFolderItem = NothingSet oFolder = NothingSet oShell = Nothing

Quelques compléments intéressants à cette fonction :

Supprimer le bouton "Créer un nouveau dossier" :

VBS

Const RETURNONLYFSDIRS = &H1

Page 9: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 9 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBSConst NONEWFOLDERBUTTON = &H200

Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON, "c:\")

Ajouter un label d'aide en ligne :

VBS

Const RETURNONLYFSDIRS = &H1Const NONEWFOLDERBUTTON = &H200Const UAHINT = &H100

Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON + UAHINT, "c:\")

Comment ouvrir la boîte de dialogue de sélection d'un fichier ?

Auteurs : Forum , l_autodidacte ,

En utilisant la classe SAFRCFileDlg.FileOpen découlant de Safrcdlg.dll:

vb Set objDialog=CreateObject("SAFRCFileDlg.FileOpen") ObjDialog.OpenFileOpenDlg strFileName=objDialog.FileName Wscript.Echo strFileName Set objDialog=Nothing

ou en utilisant la classe UserAccounts.CommonDialog ou encore UserAccounts.CommonDialog.1 découlant toutes lesdeux de NUSRMGR.CPL:

Set oDlg=CreateObject("UserAccounts.CommonDialog.1") oDlg.Filter="Tous les fichiers(*.*)|*.*|Fichier text(*.txt)|*.txt" oDlg.FilterIndex=2 oDlg.InitialDir="C:\" oDlg.ShowOpen Wscript.echo oDlg.filename set oDlg= nothing

Il est à noter que ces deux méthodes fonctionnent sous Windows XP mais pas sous Vista ni Windows 7(testé).

Faire disparaitre une MsgBox au bout d'un certain temps ?

Auteurs : omen999 , bbil ,

Popup(strText,[nSecondsToWait],[strTitle],[nType]) Les types disponibles sont :

Page 10: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 10 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Constante Valeur DescriptionvbOKOnly 0 Affiche le bouton OK.vbOKCancel 1 Affiche les boutons OK et

Annuler.vbAbortRetryIgnore 2 Affiche les boutons Terminer,

Réessayer et Ignorer.vbYesNoCancel 3 Affiche les boutons Oui, Non

et Annuler.vbYesNo 4 Affiche les boutons Oui et

Non.vbRetryCancel 5 Affiche les boutons Réessayer

et Annuler.

on peut ajouter au type de bouton le type d'icône souhaité :

Valeur Type d'icône16 Affiche l'icône Stop.32 Affiche l'icône Point d'interrogation.48 Affiche l'icône Point d'exclamation.64 Affiche l'icône Informations.

vbSet oShell = WScript.CreateObject("WScript.Shell")iRet = oShell.Popup ("Bonjour le monde ",10,"10s avant clic sur OK",vbOKCancel+16)Wscript.Echo iRet

la fonction renvoie :

Valeur Description-1 Pas de réponse1 OK2 Annuler3 Abandonner4 Réessayer5 Ignorer6 Oui7 Non

Page 11: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 11 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Fichiers : le FileSystemObject

Page 12: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 12 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Fichiers : le FileSystemObject > Généralités

Qu'est ce que le FileSystemObject ?

Auteurs : Tofalu , bbil ,

Microsoft à mis au point un ensemble d'objets regroupés au sein de la librairie Microsoft Scripting Runtime. Cetensemble de classe hiérarchique possède une unique racine : le FileSystemObject, plus communément connu sous lenom de FSOcelui-ci permet d'ajouter, de déplacer, de modifier, de créer ou de supprimer des dossiers (répertoires) , des fichiers....

lien : Tutoriel manipulation des fichiers en VBA

Comment utiliser FileSystemObject ?

Auteurs : bbil ,

Toute utilisation de FileSystemObject commence par la création de l'objet "racine" FileSystemObject:

Création Objet FSO en VBS

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")

Ensuite toute utilisation de FileSystemObject passera par cet objet.

Page 13: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 13 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Disques

Comment lister l'ensemble des unités de disques d'un PC ?

Auteurs : SilkyRoad , bbil ,

Lister les disques et l'espace disponible :

VBS

Set FSO = CreateObject("Scripting.FileSystemObject")For Each Drv In FSO.Drives If Drv.IsReady Then MsgBox "le support " & Drv.DriveLetter & " --> " & _ Drv.drivetype & " --> " & Drv.FreeSpace & " octets" End If Next

Comment tester l'existence d'un disque ?

Auteurs : Tofalu , bbil ,

La méthode DriveExists exposée par la classe FileSystemObject teste l'existence d'un disque en fonction de son nom.

VBS

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox oFSO.DriveExists("G")

Comment obtenir des informations sur les unités de disques ?

Auteurs : Tofalu , bbil ,

Les propriétés des disques• DriveLetter : Lettre utilisé par le système d'exploitation pour accéder au disque. Il s'agit de la clé de la

collection Drives. Exemple : D• DriveType : Type du disque (CDRom,Fixed,RamDisk,Remote,Removable,UnknownType)

DriveType• 0 : Inconnu• 1 : Amovible• 2 : Fixe• 3 : Réseau• 4 : CD-ROM• 5 : Disque virtuel

• FileSystem : Type du système de fichier du disque. Comme FAT, FAT32, NTFS et autre .• AvailableSpace, FreeSpace : Espace disponible et espace libre en octets• IsReady : Booléen indiquant si l'unité de disque est disponible. Dans le cas d'un lecteur de CD-ROM, elle

permettra de savoir si un disque est présent ou pas.• Path : Chemin de l'unité de disque. Exemple : "D :"• RootFolder : Retourne un objet Folder correspondant au dossier racine du disque. C'est cet objet qui donne

accès à l'ensemble des autres dossiers présent sur le disque. Le path de ce dossier est alors : Drive.Path + \ ,Exemple D:\"

• SerialNumber : Numéro de série du disque. Exemple : 1154367849

Page 14: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 14 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

• ShareName : Retourne une chaîne de caractères correspondant au nom de partage du disque. Cette chaîne seranulle si le disque n'est pas partagé. Exemple : Partage_Donnees

• VolumeName : Retourne le nom du volume (et non de l'unité) dans une chaîne de caractères. Exemple :Donnees

• TotalSize : Taille du disque en octets

Un exemple d'utilisation :

VBS

Dim oFSO,oDrvSet oFSO = CreateObject("Scripting.FileSystemObject")If oFSO.DriveExists("C") Then Set oDrv = oFso.GetDrive("C") MsgBox "DriveLetter : " & oDrv.DriveLetter & vbCrlf & _ "DriveType : " & oDrv.DriveType & vbCrlf & _ "FileSystem : " & oDrv.FileSystem & vbCrlf & _ "AvailableSpace : " & oDrv.AvailableSpace & vbCrlf & _ "FreeSpace : " & oDrv.FreeSpace & vbCrlf & _ "IsReady : " & oDrv.IsReady & vbCrlf & _ "Path : " & oDrv.Path & vbCrlf & _ "RootFolder : " & oDrv.RootFolder & vbCrlf & _ "SerialNumber : " & oDrv.SerialNumber & vbCrlf & _ "ShareName : " & oDrv.ShareName & vbCrlf & _ "VolumeName : " & oDrv.VolumeName & vbCrlf & _ "TotalSize : " & oDrv.TotalSize End if

Comment retrouver le nom d'un disque à partir d'un chemin ?

Auteurs : bbil ,

la méthode GetDriveName,renvoie une chaîne contenant le nom correspondant au lecteur spécifié dans un chemind'accèsRemarque: la méthode n'effectue aucune vérification (existence...) elle effectue juste une "extraction" de chaîne decaractère.exemple d'utilisation :

VBS

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox oFSO.GetDriveName(C:\Program Files\Fichiers communs")

renvoi C:

Page 15: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 15 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Dossiers/Répertoires

Comment tester l'existence d'un répertoire ?

Auteurs : bbil ,

Avec la méthode FolderExists

Dossier Existe

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox "C:\Program Files\Fichiers communs >> " & oFSO.FolderExists("C:\Program Files\Fichiers communs")MsgBox "C:\Program Files\Fichiers communs\RepBidon >> " & oFSO.FolderExists("C:\Program Files\Fichiers communs\RepBidon")

Comment lister les sous répertoires d'un dossier ?

Auteurs : bbil ,

Une boucle For Each permet d'énumérer l'ensemble des sous-dossiers :

listes des sous-dossiers

Dim stRep 'Nom du répertoire à parcourirDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "C:\Program Files\Fichiers communs"If oFSO.FolderExists(stRep) Then For each oFld in oFSO.GetFolder(stRep).SubFolders Wscript.Echo oFld.Name NextEnd If

Comment obtenir des informations sur un dossier ?

Auteurs : Tofalu , bbil ,

Les propriétés de l'objet Folder• Attributes : attributs du dossier.

Attributs du dossier• 0 : Normal. Aucun attribut n'est défini.• 1 : ReadOnly : Dossier en lecture seule (attribut en lecture/ecriture)• 2 : Hidden : Dossier caché (attribut en lecture/ecriture)• 4 : System : Dossier système (attribut en lecture/ecriture)• 32 : Archive : Dossier archivé (attribut en lecture/ecriture)• 2048 : Compressed : Dossier compress (attribut en lecture seule)

• DateCreated : Date de création du dossier• DateLastAccessed : Date du dernier accès au dossier• DateLastModified : Date de dernière modification• Drive : Lettre désignant l'unité de disque d'où est issu le dossier.• Files : Collection regroupant les fichiers du dossier• IsRootFolder : Booléen qui définit si le dossier est le dossier racine de son unité de disque.• Name : Nom du dossier. Exemple : Windows (propriété en lecture/ecriture)

Page 16: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 16 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

• ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cettepropriété retourne Nothing.

• Path : Chemin complet d'accès au dossier. Exemple : D:\Windows• ShortName : Nom court sur 8 caractères maximum. Exemple ESSAI1~1• ShortPath : Chemin complet d'accès au dossier où chaque composant respecte la norme évoquée pour

ShortName. Exemple D:\ABCDEF1~1\ ESSAI1~1• Size : Taille totale du dossier en octets. Il s'agit de la somme de la taille de tous les fichiers présents dans le

dossier et ses sous-dossiers.• SubFolders : Collection d'objet Folder regroupant les sous-dossiers.• Type : Type du dossier. Dans tous les cas testés, il s'agit de FileFolder.

Dim stRep 'Nom du répertoire à parcourirDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "C:\Program Files\Fichiers communs"If oFSO.FolderExists(stRep) ThenSet oFld = oFSO.GetFolder(stRep) MsgBox "Attributes :" & oFld.Attributes & vbCrlf & _ "DateCreated :" & oFld.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFld.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFld.DateLastModified & vbCrlf & _ "Drive :" & oFld.Drive & vbCrlf & _ "IsRootFolder :" & oFld.IsRootFolder & vbCrlf & _ "Name :" & oFld.Name & vbCrlf & _ "ParentFolder :" & oFld.ParentFolder & vbCrlf & _ "Path :" & oFld.Path & vbCrlf & _ "ShortName :" & oFld.ShortName & vbCrlf & _ "ShortPath :" & oFld.ShortPath & vbCrlf & _ "Size :" & oFld.Size & vbCrlf & _ "SubFolders.Count :" & oFld.SubFolders.count & vbCrlf & _ "Type :" & oFld.Type

End If

Comment créer un répertoire ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour créer un dossier :Depuis le FSO directement

Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject")'Crée le repertoireSet oFld=oFSO.CreateFolder ("D:\Essai")

où en rajoutant un élément à la collection SubFolders

Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject")Set oFld=oFSO.GetFolder ("D:\")

Page 17: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 17 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

oFld.subFolders.Add("Essai")

Comment créer une arborescence ?

Auteurs : Forum ,

Il est possible d'utiliser une fonction récursive pour créer une arborescence.

Option ExplicitDim ofsoSet ofso = CreateObject("Scripting.FileSystemObject") CreerRep("c:\data\toto\titi\") Sub CreerRep(Chemin) If Not ofso.FolderExists(chemin) Then CreerRep(ofso.GetParentFolderName(chemin)) ofso.CreateFolder(chemin) End IfEnd Sub

Comment copier un répertoire et son contenu ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour copier un dossier :Depuis le FSO directement grâce à la méthode CopyFolder

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.CopyFolder "c:\tmp","c:\tmp2",True ' True : pour copier en "écrasant" destination si existe..

où en utilisant la méthode copy de l'objet Folder

Dim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")set oFld = oFSO.GetFolder("c:\tmp")oFld.Copy "c:\tmp2",True ' True : pour copier en "écrasant" destination si existe..

Comment effacer un répertoire et son contenu ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour effacer un dossier :Depuis le FSO directement grâce à la méthode DeleteFolder

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.DeleteFolder "c:\tmp2",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules.

où en utilisant la méthode delete de l'objet Folder

Page 18: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 18 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Dim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")set oFld = oFSO.GetFolder("c:\tmp2")oFld.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lectures seules.

les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers enlecture seule.

Comment déplacer un répertoire et son contenu ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour déplacer un dossier :Depuis le FSO directement grâce à la méthode MoveFolder

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.MoveFolder "c:\tmp2","c:\tmp3"

où en utilisant la méthode move de l'objet Folder

Dim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")set oFld = oFSO.GetFolder("c:\tmp2")oFld.Move "C:\tmp3"

Comment compresser un dossier ?

Auteurs : SilkyRoad ,

VBS

Const ForReading = 1, ForWriting = 2, ForAppending = 8

Dim Source, Destination, MyHex, MyBinary, iDim oShell, oApp, oFolder, oCTF, oFileDim oFileSys

Source = "C:\Temp"Destination = "C:\maSauvegarde.zip"

MyHex = _Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

For i = 0 To UBound(MyHex) MyBinary = MyBinary & Chr(MyHex(i))Next

Set oShell = CreateObject("WScript.Shell")Set oFileSys = CreateObject("Scripting.FileSystemObject")

'Creation du zipSet oCTF = oFileSys.CreateTextFile(Destination, True)oCTF.Write MyBinaryoCTF.CloseSet oCTF = Nothing

Page 19: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 19 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBS

Set oApp = CreateObject("Shell.Application")

Set oFolder = oApp.NameSpace(Source)If Not oFolder Is Nothing Then _ oApp.NameSpace(Destination).CopyHere oFolder.Items

wScript.Sleep 5000

Set oFile = NothingOn Error Resume Next

Page 20: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 20 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Fichiers

Comment tester l'existence d'un fichier ?

Auteurs : bbil ,

La méthode FileExists exposée par la classe FileSystemObject teste l'existence d'un fichier en fonction de son nom.

VBS

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox oFSO.FileExists("c:\tmp\Fichier1.txt")

Comment lister les fichiers d'un dossier ?

Auteurs : bbil ,

Une boucle For Each permet d'énumérer l'ensemble des fichiers :

VBS

Dim stRep 'Nom du répertoire à parcourirDim oFSO,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "C:\Tmp"If oFSO.FolderExists(stRep) Then For each oFl in oFSO.GetFolder(stRep).Files Wscript.Echo oFl.Name NextEnd If

Comment obtenir des informations sur fichier ?

Auteurs : Tofalu , bbil ,

Les propriétés de l'objet File• Attributes : attributs du dossier.

Attributs du fichier• 0 : Normal. Aucun attribut n'est défini.• 1 : ReadOnly : fichier en lecture seule (attribut en lecture/ecriture)• 2 : Hidden : fichier caché (attribut en lecture/ecriture)• 4 : System : fichier système (attribut en lecture/ecriture)• 32 : Archive : fichier archivé (attribut en lecture/ecriture)• 1024 : Lien ou raccourci. L'attribut est lecture seule. (attribut en lecture seule)• 2048 : Compressed : fichier compressé (attribut en lecture seule)

• DateCreated : Date de création du fichier• DateLastAccessed : Date du dernier accès au fichier• DateLastModified : Date de dernière modification• Drive : Lettre désignant l'unité de disque d'où est issu le dossier.• Name : Nom du fichier. Exemple : Fichier1.txt (propriété en lecture/ecriture)• ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cette

propriété retourne Nothing.• Path : Chemin complet d'accès au fichier. Exemple : c:\tmp\fichier1.txt• ShortName : Nom court sur 8 caractères maximum. Exemple : MONFIC~1.TXT

Page 21: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 21 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

• ShortPath : Chemin complet d'accès au fichier où chaque composant respecte la norme évoquée pourShortName. Exemple D:\ABCDEF1~1\MONFIC~1.TXT

• Size : Taille du fichier en octets.• Type : Type du fichier. Exemple : Document Texte. C'est ce type qui est affiché dans l'explorateur Windows.

VBS

Dim stFichier 'Nom du Fichier a tester Dim oFSO,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")stFichier = "c:\tmp\Nouveau Document texte.txt"If oFSO.FileExists(stFichier) ThenSet oFl = oFSO.GetFile(stFichier) MsgBox "Attributes :" & oFl.Attributes & vbCrlf & _ "DateCreated :" & oFl.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFl.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFl.DateLastModified & vbCrlf & _ "Drive :" & oFl.Drive & vbCrlf & _ "Name :" & oFl.Name & vbCrlf & _ "ParentFolder :" & oFl.ParentFolder & vbCrlf & _ "Path :" & oFl.Path & vbCrlf & _ "ShortName :" & oFl.ShortName & vbCrlf & _ "ShortPath :" & oFl.ShortPath & vbCrlf & _ "Size :" & oFl.Size & vbCrlf & _ "Type :" & oFl.Type

End If

Comment obtenir les informations étendues d'un fichier ?

Auteurs : Forum ,

la bibliothèque "Microsoft Shell Controls and Automation" permet, grâce à la fonction GetDetailsOf , d'accéder auxpropriétés étendues :

stRep="d:\MesPhotos" stFichier ="photo.jpg" Set oShell = CreateObject("Shell.Application")Set oFolder = oShell.Namespace(stRep)Set oFichier = oFolder.Items.Item(stFichier)'Affiche les propriétés étendues du fichierFor i = 0 to 34 Wscript.Echo "[" & i & "] " & oFolder.GetDetailsOf(oFolder.Items, i ) & " : " & oFolder.GetDetailsOf(oFichier, i)Next

le résultat :D:\>PropEtendues.vbsMicrosoft (R) Windows Script Host Version 5.7Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.[0] Nom : photo.jpg[1] Taille : 900 Ko[2] Type : Image JPEG[3] Date de modification : 07/09/2009 18:26[4] Date de création : 31/10/2010 14:01[5] Date d'accès : 01/11/2010 13:32[6] Attributs : A[7] État : Connecté[8] Propriétaire : DELLGX280\philippe

Page 22: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 22 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

[9] Auteur :[10] Titre :[11] Objet :[12] Catégorie :[13] Pages : 1[14] Commentaires :[15] Copyright :[16] Artiste :[17] Titre de l'album :[18] Année :[19] Numéro de piste :[20] Genre :[21] Durée :[22] Débit :[23] Protégée :[24] Modèle d'appareil photo : 5800 Xpres[25] Date du cliché : 07/09/2009 19:26[26] Dimensions : 2048 x 1536[27] : 2048 pixels[28] : 1536 pixels[29] Nom de l'épisode :[30] Description du programme :[31] :[32] Taille de l'échantillon audio :[33] Taux d'échantillonnage audio :[34] Chaînes :

Le nombre de propriétés est variable suivant l'OS. Ainsi si XP affiche 35 propriétés, on peut en trouver jusqu'à 266sous Vista et 284 sous Windows 7.

lien : Informations "Avancée" d'un fichier

Comment copier un fichier ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour copier un fichier :Depuis le FSO directement grâce à la méthode CopyFile

VBS

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.CopyFile "c:\tmp\Fichier1.txt","c:\tmp\Fichier2.txt",True ' True : pour copier en "écrasant" destination si existe..

où en utilisant la méthode copy de l'objet file

Dim oFS,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")

Page 23: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 23 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

oFl.Copy "c:\tmp\fichier3.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers en lectures seules.

Comment effacer un fichier ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour effacer un fichier :Depuis le FSO directement grâce à la méthode DeleteFile

VBS

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.DeleteFile "c:\tmp\fichier1.txt",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules.

où en utilisant la méthode delete de l'objet File

Dim oFS,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")oFl.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lectures seules.

les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers enlecture seule.

Comment déplacer,renommer un fichier ?

Auteurs : Tofalu , bbil ,

Il est possible d'utiliser deux techniques différentes pour déplacer un fichier :Depuis le FSO directement grâce à la méthode MoveFile

Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.MoveFile "c:\tmp\Fichier1.txt","c:\tmp\fichier2.txt"

où en utilisant la méthode move de l'objet file

VBS

Dim oFS,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")

Page 24: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 24 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBSoFl.Move "D:\tmp\fichier2.txt" ' Déplacement vers autre unité de disque tout en renommant le fichier...

Comment lire le contenu d'un fichier texte ?

Auteurs : bbil ,

Lecture ligne à ligne d'un fichier texte :

VBS

Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) while Not f.AtEndOfStream wscript.echo f.ReadLine Wend f.Close

Lecture de la totalité d'un fichier texte :

VBS

Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) Wscript.echo f.ReadAll f.Close

Comment ouvrir un fichier texte en Unicode ?

Auteurs : bbil ,

en utilisant le 4° paramétre d'openTextFileOpenTextFile(filename[, iomode[, create[, format]]])avec format :TristateFalse (0) Ouvre le fichier en ASCII.TristateTrue (-1) Ouvre le fichier en Unicode.TristateUseDefault (-2) Ouvre le fichier en utilisant le paramètre système par défaut.

vbConst TristateTrue = -1

Page 25: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 25 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

vbset f = fso.opentextfile("c:\MonFichier.txt", 1, true,TristateTrue)

Comment écrire dans un fichier texte ?

Auteurs : bbil ,

VBS

Const ForWriting = 2 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("c:\temp\ecr.txt", ForWriting,true) f.write("Salut")

Comment obtenir le nombre de lignes d'un fichier texte ?

Auteurs : ThierryAIM ,

A l'ai de la propriété Line de l'objet fichier :

VBS

Const ForReading = 1, ForWriting = 2 Dim oFso, fDim ts, nl Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\test1.txt", ForReading) ts = f.ReadAll '-- Lit la totalité du fichier Wscript.echo f.Line '-- Récupère le nombre de lignes

Comment agir sur tous les fichiers d'un répertoire ?

Auteurs : bbil ,

Grâce à une fonction récursive.Utilisez le principe présenté dans le script suivant en modifiant la procédure ListeFichier.

vbDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "d:\users"LectRep stRep '' Fonction récursive de parcours de répertoire'Sub LectRep (stR ) For each oFld in oFSO.GetFolder(stR).SubFolders Wscript.Echo "--------------- " & oFld.PAth & "-----------------" ListeFichier (oFld.PATH) LectRep oFld.PATH Nextend sub'' Listing des fichiers du répertoire

Page 26: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 26 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

vb'Sub ListeFichier (stR) For each oFl in oFSO.GetFolder(stR).Files Wscript.Echo oFl.Name NextEnd sub

Page 27: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 27 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Applications Externes

Comment piloter Excel pour créer un classeur.xls ?

Auteurs : bbil ,

Il faut utiliser un objet Excel.Application

VBS

Dim xlapp, classeur, feuille

Set xlapp = CreateObject("Excel.Application")xlapp.Visible = TrueSet classeur = xlapp.Workbooks.addSet feuille = xlapp.ActiveSheetfeuille.Range("A1") = "Rajout du texte en cellule A1"Classeur.Saveas "c:\tmp\MonClasseur"classeur.Close True 'quitte en sauvant

xlApp.quitSet classeur = NothingSet xlapp = Nothing

Comment piloter Internet Explorer pour envoyer des informations à un site internet ?

Auteurs : bbil ,

Avec l'objet InternetExplorer.Application

Exemple pour la connexion au forum développez.com

VBS

Dim IESet IE = Wscript.CreateObject("InternetExplorer.Application")IE.Visible = 1 IE.navigate "http://www.developpez.net/forums/login.php"Do While (IE.Busy) WScript.Sleep 10LoopSet Helem = IE.document.getElementById("vb_login_username")Helem.Value = "NomUtilisateur"Set Helem = IE.document.getElementById("vb_login_password")Helem.Value = "MotDePasse"Set Helem = IE.document.Forms(0)Helem.Submit

Comment verrouiller la session Windows courante ?

Auteurs : bbil ,

Pour retourner à l'écran d'accueil de Windows XP (où Vista) de la même façon que lors de l'action simultanée surles touches Windows et L, on peut faire un appel à la fonction LockWorkStation de User32.dll grâce à "l'utilitaire"rundll32.exe, ce qui donne:

VBSSet WshShell = WScript.CreateObject("WScript.Shell")

Page 28: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 28 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBSWshShell.Run "rundll32.exe user32.dll,LockWorkStation"

Comment lister les actions possibles sur un fichier ?

Auteurs : l_autodidacte ,

En utilisant la propriété Name de la classe FolderItemVerbs découlant de Shell.Application' Il est utile de connaître ces actions si on veut manipuler un fichier par exemple : "Ouvrir" (Open par défaut),"Copier,coller, Imprimer, supprimer ... et ce en utilisant la méthode InvokVerb ou InvokVerbEx

vbSet oShell = CreateObject("Shell.Application")Set oFolder = oShell.NameSpace("c:\tmp")Set oFolderItem = oFolder.ParseName("microsoft.jpg")

For Each oVerb In oFolderItem.Verbs If oVerb<>"" Then WScript.Echo oVerbNext

lien : http://vb.developpez.com/faqvbs/?page=II.3#ImprimePdf

Comment imprimer tous les fichiers .pdf d'un dossier ?

Auteurs : l_autodidacte ,

En utilisant un appel à Shell.Application :

vbSet objShell = CreateObject("Shell.Application") 'Référence à Shell32.dll Set objFolder = objShell.Namespace("c:\temp\") Set colItems = objFolder.Items For Each objItem in colItems If Ucase(Right(ObjItem.Name,4))=".PDF" then objItem.InvokeVerbEx("Print") End If Next

Bien entendu cela impose la présence d'une application (Acrobat Reader...) gérant les .pdf.

Page 29: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 29 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Les Fichiers de Script Windows

Les fichiers Windows Script File (.wsf)

Auteurs : bbil , ThierryAIM ,

Les fichiers de script Windows (Windows Script File), utilisant l'extension réservée .wsf, sont des fichiers textes auformat XML, permettant une grande souplesse dans la gestion des scripts VBS.

Outre qu'ils permettent l'utilisation de plusieurs langages de script dans un même projet, voyons comment les utiliseren VBScript.

Exemple 1 : Séparer un module de fonctions réutilisables, d'un projet :

Créer un module .vbs, contenant les fonctions génériques :

VBS

' Fichier MesFct.vbs'function Fct1( st ) Fct1 = st & 1End function

Function Fct2 (st) Fct2 = st & 2End function

Puis un fichier MyScript.wsf ... utilisant ces fonctions :

VBS

<job id="Main"> <script language="VBScript" src="MesFct.VBS"/> <script language="VBScript"> MsgBox "Appel fonction 1 : " & Fct1 ("A") Msgbox "Appel fonction 2 : " & fCt2 ("B") </script></job

lien : La balise "job"

La balise "script"

Auteurs : ThierryAIM ,

Balise réservée du XML pour fichier .wsf, elle permet d'identifier le langage de script utilisé :

WSF

<script language="VBScript"> WScript.Echo "Il s'agit de VBScript"

Page 30: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 30 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

WSF</script>

La balise "job"

Auteurs : ThierryAIM ,

Balise réservée du langage XML des fichiers .wsf, elle permet d'identifier une tache (job) dans un fichier .wsf :

WSF

<job id="MaTacheVBS"> <script language="VBScript"> WScript.Echo "Il s'agit de VBScript" </script></job>

La balise "package"

Auteurs : ThierryAIM ,

Balise réservée du XML pour fichier .wsf, elle permet d'identifier un groupe de tâche (job) dans un script multi-tâches :Cette balise est facultative lorsque le script ne comporte qu'une seule tâche

WSF

<package> <job id="MaTache_1_VBS"> <script language="VBScript"> WScript.Echo "VBScript: job 1" </script> </job> <job id="MaTache_2_VBS"> <script language="VBScript"> WScript.Echo "VBScript: job 2" </script> </job></package>

NOTA : La tâche 1 est exécutée par défaut.Pour exécuter la tâche 2 en ligne de commande :cscript myScript.wsf //job:MaTache_2_VBSPour exécuter les 2 tâches en ligne de commande :cscript myScript.wsf //job:MaTache_1_VBS //job:MaTache_2_VBS

Page 31: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 31 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > XML

Comment créer un nouveau document XML ?

Auteurs : ThierryAIM , bbil ,

Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :

VBS

'-- Créer un document XMLSet xmlDoc = CreateObject("Microsoft.XMLDOM") ' Créer et ajouter la racine dans le document' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XMLSet oRacine = xmlDoc.createElement("Racine") ' Ajouter la racine dans le documentxmlDoc.appendChild oRacine

' Ajouter un élémentSet oElement = xmlDoc.selectSingleNode("Racine") ' positionnement sur la racineSet oElement = xmlDoc.createElement("element") ' création d'un fils membrexmlDoc.documentElement.appendChild oElement ' crée le fils de la racine

' Ajouter des champs balisesSet oNom = xmlDoc.createElement("nom")oNom.Text = "LENOM"oElement.appendChild oNomSet oNom = Nothing

Set oPrenom = xmlDoc.createElement("prenom")oPrenom.Text = "Prénom"oElement.appendChild oPrenomSet oPrenom = NothingSet oElement = Nothing

'-- Indenter le fichier crééset rdr = CreateObject("MSXML2.SAXXMLReader")set wrt = CreateObject("MSXML2.MXXMLWriter")Set oStream = CreateObject("ADODB.STREAM")oStream.Open 'Ouverture objet stream..oStream.Charset = "ISO-8859-1"

wrt.indent = Truewrt.encoding = "ISO-8859-1"wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet StreamSet rdr.contentHandler = wrtSet rdr.errorHandler = wrtrdr.Parse xmlDocwrt.flush

' Sauver le fichier crééoStream.SaveToFile "test1.xml", 2

' Détruire les objetsSet rdr = NothingSet wrt = NothingSet xmlDoc = Nothing

Résultat :

XML

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>

Page 32: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 32 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

XML<Racine Create="03/03/2007"> <element ID="1"> <nom>LENOM</nom> <prenom>Prénom</prenom> </element></Racine>

Comment ouvrir un document XML existant ?

Auteurs : bbil ,

Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :

'-- Lire un document XMLSet xmlDoc=CreateObject("Microsoft.XMLDOM")

'La desactivation du mode asynchrone permet de charger entièrement le document en mémoire avant le traitementxmlDoc.Async="false"

'Charger le document en mémoirexmlDoc.Load("c:\test1.xml")

For each x in xmlDoc.documentElement.childNodes Msgbox x.nodename & " : " & x.textNextSet xmlDoc = Nothing

Comment ajouter un attribut à une balise XML ?

Auteurs : Forum , ThierryAIM ,

La méthode SetAttribute de l'objet Element permet de spécifier un attribut pour une balise XML.Un attribut se compose de 2 paramètres :- un identificateur- la valeur de l'attribut

Reprenons l'exemple précédent et ajoutons un attribut Date au noeud racine et un attribut ID pour le noeud element :

'-- Créer un doc XMLSet xmlDoc = CreateObject("Microsoft.XMLDOM")Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")xmlDoc.insertBefore oCreation, xmlDoc.childNodes.Item(0) ' Créer et ajouter la racine dans le document' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XMLSet oRacine = xmlDoc.createElement("Racine")

' Ajouter un attribut Date de création du documentoRacine.setAttribute "Créé_le", FormatDateTime(Date, vbGeneralDate) ' Ajouter la racine dans le documentxmlDoc.appendChild oRacine

' Ajouter un élémentSet oElement = xmlDoc.selectSingleNode("Racine") ' positionnement sur la racineSet oElement = xmlDoc.createElement("element") ' création d'un fils membre

Page 33: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 33 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

' Ajouter un attribut ID à l'élément crééoElement.setAttribute "ID", "1"xmlDoc.documentElement.appendChild oElement ' crée le fils de la racine

' Ajouter des champs balisesSet oNom = xmlDoc.createElement("nom")oNom.Text = "LENOM"oElement.appendChild oNomSet oNom = Nothing

Set oPrenom = xmlDoc.createElement("prenom")oPrenom.Text = "Prénom"oElement.appendChild oPrenomSet oPrenom = NothingSet oElement = Nothing

' Sauver le fichier crééxmlDoc.save ("test1.xml")Set xmlDoc = Nothing

Résultat :

XML

<?xml version="1.0" encoding="ISO-8859-1"?><Racine Créé_le="19/02/2007"> <element ID="1"> <nom>LENOM</nom> <prenom>Prénom</prenom> </element></Racine>

lien : Comment créer un nouveau document XML ?

Comment accéder aux valeurs d'un noeud par le nom de balise ?

Auteurs : Forum , ThierryAIM ,

C'est bien gentil de créer un document XML, encore faut-il pouvoir accéder à son contenu et en retirer les informationsqui nous intéressent :

Sur la base de l'exemple précédent, comment récupérer les valeurs de la balise nom en utilisant la méthodegetElementsByTagName :

VBS

'-- Lire un doc XMLSet xmlDoc=CreateObject("Microsoft.XMLDOM")xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitementxmlDoc.load("test1.xml")

' Lister les valeurs par nom de balise Set oElement = xmlDoc.documentElement If Not oElement Is Nothing Then For Each x In oElement.getElementsByTagName("nom") MsgBox x.Text Next

Page 34: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 34 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBS End If

lien : Comment ajouter un attribut à une balise XML ?

Comment accéder aux attributs d'une balise ?

Auteurs : bbil ,

La méthode GetAttribute de l'objet Element permet d'accéder aux attributs d'une balise noeud :

VBS

'-- Lire un doc XMLSet xmlDoc = CreateObject("Microsoft.XMLDOM")xmlDoc.async = "false" xmlDoc.load("test1.xml")

' Pour tous les noeuds "element", renvoie l'attribut "ID"' Attention à la casse !For Each oElement In xmlDoc.getElementsByTagName("element") MsgBox oElement.getAttribute("ID")Next

Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ?

Auteurs : ckeromen ,

L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages, ci-dessous un squeletteen VBScript. Remplacer les expressions entre accolades par les valeurs réelles ou des paramètres (ex.: {namespace}) :

vbDim WshShellSet WshShell=CreateObject("WScript.Shell") Dim xmlDocset xmlDoc=CreateObject("Msxml2.DOMDocument.6.0")xmlDoc.async=falsexmlDoc.validateOnParse=true Dim xmlSchemaset xmlSchema=CreateObject("Msxml2.DOMDocument.6.0")xmlSchema.async=falsexmlSchema.validateOnParse=truexmlSchema.load {le chemin d acces au schema} Dim xsdCacheset xsdCache=CreateObject("Msxml2.XMLSchemaCache.6.0")xsdCache.add {namespace}, xmlSchemaSet xmlDoc.schemas = xsdCache xmlDoc.load {le chemin d acces au fichier XML} Set myErr=xmlDoc.parseErrorIf(myErr.errorCode<>0)Then WScript.Echo("errorReason="+myErr.reason)else WScript.Echo("ok")End If

Page 35: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 35 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Base de donnée

Comment créer une base mdb, en DAO ?

Auteurs : bbil ,

en utilisant la bilbliothéque Microsoft DAO 3.6 Object Library :

vbConst dbInteger =3Const dbText = 10Set oDAO36 = CreateObject("DAO.DBEngine.36")Set oBase = oDAO36.CreateDatabase("Mabase.MDB", ";LANGID=0x0409;CP=1252;COUNTRY=0", 64) Set oTable = oBase.CreateTableDef("Table1") oTable.Fields.Append oTable.CreateField("Champ1", dbInteger) oTable.Fields.Append oTable.CreateField("Champ2", dbText, 50) oBase.TableDefs.Append oTable oBase.Close

lien : Définition et manipulation de données avec DAO

Page 36: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 36 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Manipulation des chaînes de caractères

Comment extraire une partie d'une chaîne ?

Auteurs : bbil ,

On retrouve les fonctions habituelles d'extraction d'une partie de chaîne de Visual basic :

• Left(chaîne, NombreDeCaracteres) : Pour extraire la partie gauche de la chaîne donnée en paramètre• Right(chaîne, NombreDeCaracteres) : Pour extraire la partie droite de la chaîne donnée en paramètre• Mid(chaîne, posdepart, NombreDeCaracteres) : Pour extraire le nombre de caractères spécifiés, à partir d'un

caractère donné (posdepart)

VBSDim stst="Bienvenue sur DVP"Wscript.Echo Left(st,9)Wscript.Echo Mid(st,11,3)Wscript.Echo Right(st,3)

RésultatBienvenuesurDVP

Nota: Pour la fonction Mid si le troisième paramètre (NombreDeCaracteres) est omis ou supérieur au nombre decaractères disponibles dans la chaîne après la position de départ, le caractère en position de départ et tous les caractèresqui lui succèdent sont retournés.ce qui donne :

VBSDim stst="Bienvenue sur DVP"Wscript.Echo Mid(st,11)Wscript.Echo Mid(st,11,255)

Résultatsur DVPsur DVP

Comment connaitre la longueur d'un chaîne ?

Auteurs : bbil ,

En utilisant la fonction Len() :

VBSDim stst="Bienvenue sur DVP"Wscript.Echo Len(st)

Résultat

Page 37: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 37 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Résultat17

Comment concaténer deux chaînes ?

Auteurs : bbil ,

L'opérateur usuel de concaténation est : &

VBSDim st1Dim st2'' Concaténation de la "valeur" de 2 variable'st1 = "Bienvenue "st2 = "sur dvp"Wscript.Echo st1 & st2' Une chaîne et une variable :Wscript.Echo st1 & " a vous"

ce qui donne :

Bienvenue sur dvpBienvenue a vous

Il est aussi possible (mais déconseillé) d'utiliser l'opérateur : +Celui-ci se comporte en opérateur de concaténation lorsque les 2 membres de l'opération sont des chaînes

VBS

Wscript.Echo "à voir " + st2'Attention dans l'utilisation de l'opérateur +Wscript.Echo "1" + "2"

Résultatà voir sur dvp12

et en opérateur d'addition lorsque l'un des opérantes est numérique

VBSWscript.Echo "3" + 2Wscript.Echo 1+2

Résultat53

Une mauvaise utilisation de l'opérateur +, peut provoquer une erreur de type :Erreur d'exécution Microsoft VBScript: Type incompatible: '[string: "a"]'

VBSWscript.Echo "a" + 1

Page 38: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 38 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

la chaîne "a" ne pouvant pas être additionnée à la valeur numérique 1.

Comment "éclater" une chaîne dans un tableau ?

Auteurs : bbil ,

la fonction Split permet "d'éclater" le contenu d'une chaîne dans un tableau, en fonction d'un caractère séparateur

VBSDim st,i,tbst="Antoine,Pierre,Jacques,Alain"tb = split(st,",")For i = lbound(tb) to ubound(tb) Wscript.echo tb(i)next

RésultatAntoinePierreJacquesAlain

Nota: les fonctions Lbound et Ubound permettent de renvoyer les limites basse et haute des index d'un tableau. Lafonction Split renvoyant un tableau dont l'index le plus bas est toujours 0, on aurai pu écrire :

For i = 0 to ubound(tb)

Comment transformer un tableau en une chaîne?

Auteurs : bbil ,

Il existe un pendant à la fonction Split :

la fonction Join qui permet de regrouper tous les éléments d'un tableau de chaîne en une chaîne, tout en précisant unséparateur :

VBSDim st,tb(3)Tb(0)="Antoine"tb(1)="Pierre"tb(2)="Jacques"tb(3)="Alain"

st = join(tb,",") Wscript.echo st

RésultatAntoine,Pierre,Jacques,Alain

Page 39: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 39 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Nota: Si le caractère de séparation est omis, un espace est utilisé.

Comment rechercher une chaîne de caractères dans une autre ?

Auteurs : Romain Puyfoulhoux ,

Instr(p,ch1,ch2) recherche la chaîne ch2 dans ch1 à partir de la position p. Si ch2 est trouvée, la valeur renvoyée est laposition de son premier caractère dans ch1, sinon la fonction renvoie 0.

vb

pos = InStr(4, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 24pos = InStr(27, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 0

Comment utiliser les expressions régulières ?

Auteurs : Romain Puyfoulhoux ,

La librairie Microsoft VBScript Regular Expressions permet d'utiliser des expressions régulières dans Visual Basic. Ilfaut l'ajouter dans les références du projet.

Le principe consiste à créer un objet RegExp, à le paramétrer en modifiant ses propriétés, puis à lancer la rechercheen appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitezfaire une recherche. La méthode Execute renvoie les occurrences dans une collection. Si vous avez donné la valeur Trueà la propriété Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la première.

Voici comment vérifier la validité d'une adresse email. Ce code a été écrit avec la version 5.5 de la librairie.

vbsPublic Function EmailValide(ByVal email ) Dim regEx , occurrences Set regEx = New RegExp regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$" regEx.IgnoreCase = True 'Ne pas distinguer les minuscules des majuscules regEx.Global = False 'Renvoyer seulement la première occurrence Set occurrences = regEx.Execute(email) EmailValide = (occurrences.Count = 1) End Function

Comment tester une chaîne de caractères avec une expression régulière ?

Auteurs : Baptiste Wicht ,

Il faut pour cela utiliser l'objet RegExp qui va permettre de valider une chaîne de caractères en fonction d'un pattern :

vbsSet RegularExpressionObject = New RegExp

Ensuite, il faut le paramétrer en fonction de la recherche :

With RegularExpressionObject .Pattern = Pattern

Page 40: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 40 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

.IgnoreCase = BooleanEnd With

La pattern est l'expression régulière et IgnoreCase permet d'indiquer s'il faut prendre en compte ou non la casse.Ensuite, une fois l'objet paramétré, il suffit d'utiliser la méthode Test avec la chaîne à tester en paramètre :

RegularExpressionObject.Test(aTester)

Cette méthode va nous renvoyer True ou False en fonction du résultat.

Voici par exemple, la méthode pour valider une adresse IP :

vbsSet RegularExpressionObject = New RegExp With RegularExpressionObject .Pattern = "^((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)$" .IgnoreCase = FalseEnd With MsgBox RegularExpressionObject.Test("172.16.18.21")MsgBox RegularExpressionObject.Test("300.22.194.37")

Ce qui nous retourne true pour la première chaîne et False pour la seconde.

III-B. Les expressions régulières

Comment interpréter une chaîne string ?

Auteurs : Sadneth , shwin ,

En utilisant la méthode Eval :

vbs

Dim toto toto = "SUPER * 10" MsgBox Eval(Replace(toto, "SUPER", 500))

Page 41: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 41 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Manipulation des dates

Comment récupérer la date et l'heure courante ?

Auteurs : Baptiste Wicht ,

Pour récupérer la date et l'heure courante sous forme de chaîne , il suffit d'utiliser la variable prédéfinie Now. Voicice que vaut la variable Now à l'heure ou j'écrit ces lignes :

15.11.2007 09:23:23

Cette variable est donc très pratique pour l'affichage. Mais si on désire faire des calculs sur des parties de l'heurecourante seulement, par exemple, si on a besoin de récupérer les secondes, ce n'est pas très pratique. On pourrait bienévidemment parser la chaîne pour récupérer ce dont on a besoin, mais on a pas besoin de se donner ce mal, car VBSpossède déjà les fonctions nécessaires :

• Year : Retourne l'année de la date• Month :Retourne le mois de la date• Day : Retourne le jour de la date• Hour : Retourne l'heure de la date• Minute : Retourne les minutes de la date• Second : Retourne les secondes la date

Il suffit de passer Now en paramètre de ces fonctions pour récupérer les éléments voulus.

VBSWScript.Echo Day(Now)& "."& Month(Now)& "."& Day(Now)& "."& Year(Now)& " "& Hour(Now)& ":"& Minute(Now)& ":"& Second(Now)

Comment récupérer le nom du jour de la semaine dans une variable ?

Auteurs : bbil ,

Grâce à une combinaison de la fonction WeekDay qui, à partir d'une date, renvoi le numéro (1 à 7 ) du jour de lasemaine... et la fonction WeekDayName qui, à partir de ce numéro, renvoi le nom du jour :

VBS

Dim d 'date à traiter Dim stJs ' chaine jour de la semaine.. d = now ' date actuelle stJS = WeekDayName(WeekDay(d)) Wscript.Echo " Nous sommes un : " & stJs

Obtenir mois sur deux caractères ?

Auteurs : omen999 ,

L'emploi de deux fonctions simples permet d'extraire le mois d'une date tout en le formatant sur deux caractéres.

vbdDate = CDate("1/2/10")MsgBox Right("0" & Month(dDate),2)

Page 42: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 42 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > VB Script > Manipuler la base de registre

Comment manipuler la base de registre ?

Auteurs : bbil ,

L'objet WshShell possède trois méthodes permettant de manipuler la base de registre :1 RegWrite : pour écrire dans la base de registre2 RegRead : pour lire une entrée de la base de registre3 RegDelete : pour effacer une clef ou sa valeur de la base de registre

Ces trois méthodes utilisent comme premier paramètre le nom de la clé concernée. Pour, construire ce nom, desabréviations peuvent être utilisées :

Nom de clé racine AbréviationHKEY_CURRENT_USER HKCUHKEY_LOCAL_MACHINEHKLMHKEY_CLASSES_ROOT HKCRHKEY_USERS HKEY_USERSHKEY_CURRENT_CONFIGHKEY_CURRENT_CONFIG

Pour plus d'informations sur la base de registre, et quelques-unes des utilisations possible, voir :

la faq Windows XP : http://windows.developpez.com/faq/xp/index.php?rechercher=registre

Comment écrire dans la base de registre ?

Auteurs : bbil ,

Pour écrire dans la base de registre, on utilise la méthode RegWrite de l'objet WshShellla documentation Microsoft nous décrit la fonction ainsi :object.RegWrite(strName, anyValue [,strType])ArgumentsobjectObjet WshShell.strName Valeur de chaîne indiquant le nom de la clé, le nom de la valeur ou la valeur que vous voulez créer, ajouter oumodifier. anyValue Nom de la nouvelle clé que vous voulez créer, nom de la valeur que vous voulez ajouter à une cléexistante ou nouvelle valeur que vous voulez assigner à un nom de valeur existant. strType Facultatif. Valeur de chaîneindiquant le type de données de la valeurLe paramètre facultatif strType permet d'indiquer le type données :

Nom de clé racine strTypeChaîne REG_SZChaîne REG_EXPAND_SZNombre entier REG_DWORDNombre entier REG_BINARY

vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegWrite "HKCU\Software\dvp-faqvbs\montest",now

Page 43: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 43 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

La fonction now renvoie ici la date et l'heure courante sous la forme d'une chaîne de caractères.

Comment lire la base de registre ?

Auteurs : bbil ,

La Méthode RegRead permet de lire la base de registre. Elle ne prend qu'un argument : le nom de la clé ( qui peucomporter des abréviations ..)

vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")msgbox WshShell.RegRead ("HKCU\Software\dvp-faqvbs\montest")

Comment supprimer une "valeur" où une clé de la base de registre ?

Auteurs : bbil ,

La méthode RegDelete permet d'effacer une entrée de la base de registre. Elle ne prend qu'un argument : le nom dela clé ( qui peu comporter des abréviations ..)

vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\montest")

Cette même méthode permet aussi d'effacer une clé (en terminant le nom de la clé par un \):

vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\")

Comment associer une extension à un programme ?

Auteurs : Jean-Marc Rabilloud , Khorne ,

Le principe repose sur la création de plusieurs clés dans la base de registre. Une des méthodes est l'utilisation duWindows Script Host Object Model.

vb

Dim MaCle Set MaCle = CreateObject("WScript.Shell")'nom de votre type de fichierMaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\", "Test Ext", "REG_SZ"'commande a exécuter pour ouvrir les fichiers de ce typeMaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\shell\open\command\", "C:\jmarc\FAQ\TestExt.exe %1", "REG_SZ"'icone à utiliser pour représenter les fichiers de ce type, ici la troisième icone contenue dans TestExt.exe'(la première icone a l'index 0)MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\DefaultIcon\", "C:\jmarc\FAQ\TestExt.exe,2", "REG_SZ"

'extension correspondant à ce type de fichier

Page 44: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 44 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

vbMaCle.RegWrite "HKEY_CLASSES_ROOT\.jmr\", "Test Ext", "REG_SZ"

Suite à l'application de ce script, tout fichier ayant une extension ".jmr" sera ouvert avec le programme TestExt.exe.

Comment désactiver le gestionnaire des tâches ou la séquence de touches Ctrl-Alt-Suppr ?

Auteurs : Khorne ,

Pour Windows 2000 et supérieur :Cette astuce permet de désactiver ou d'activer le gestionnaire des tâches à partir du code de votre programme et donc,d'inhiber la séquence de touches Ctrl-Alt-Suppr.Lorsque le gestionnaire est désactivé, le système renvoie un message d'avertissement (A utiliser avec précaution) :

Désactiver :

vb

Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", "1" Set WshShell = Nothing

Activer :

vb

Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", "" Set WshShell = Nothing

Page 45: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 45 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WMI : Windows Management Instrumentation

Définition

Auteurs : ThierryAIM ,

WMI (l'abréviation de Windows Management Instrumentation) est l'adaptation par Microsoft de la technologie demanagement des ressources WBEM (Web-Based Enterprise Management WBEM).Les possibilités de WMI sont immenses. Intégré depuis Windows 2000, WMI permet d'accéder rapidement etsimplement à toutes les ressources du système, telles que :

• Dispositifs de stockage de masses (disques durs, ...)• Carte mère, mémoire, ...• Fichiers système• Paramètres du système d'exploitation• Processus• Services Windows• Base de registre• etc ...

Vous trouverez une excellente introduction à WMI par Laurent Dardenne au lien ci-dessous.

Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript.

lien : Windows Management Instrumentation ( WMI ), première partie par Laurent Dardenne

lien : Microsoft MSDN: A propos de WMI

Page 46: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 46 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WMI : Windows Management Instrumentation > Processus : classe Win32_Process

Comment lister les processus actifs ?

Auteurs : ThierryAIM ,

En utilisant la classe Win32_process ;

VBS

Set objWMI = GetObject("winmgmts:root\cimv2") sQuery = "Select * from Win32_process" For Each oproc In objWMI.execquery(sQuery) Wscript.echo oproc.Name & " = " & oproc.ExecutablePath Next Set objWMI = Nothing

lien : Microsoft Win32 Process WMI class

Comment "tuer" un processus en mémoire ?

Auteurs : ThierryAIM , cedric600 ,

Un script WMI utilisant la classe Win32_process pour obtenir la liste des processus actifs, puis la méthode Terminatepour fermer le processus sélectionné :

VBS

strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'Notepad.exe'") For Each objProcess in colProcessList objProcess.Terminate()Next

Page 47: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 47 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WMI : Windows Management Instrumentation > Services : classe Win32_Service

Comment lister les services actifs ?

Auteurs : cedric600 ,

En utilisant la classe Win32_Service :

VBS

strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service",,48) For Each objItem in colItems Wscript.Echo "Service : " & objItem.Name & " : " & objItem.State Next Set colItems = Nothing Set objWMIService = Nothing

lien : Microsoft Win32 Service class

Page 48: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 48 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WMI : Windows Management Instrumentation > Imprimantes : classe Win32_Printer

Comment lister les imprimantes installées ?

Auteurs : SilkyRoad ,

Lister les imprimantes installées et préciser laquelle est active :

VBS

Dim objWMIService, colInstalledPrinters, objPrinterDim nomPC, Resultat nomPC = "." Set objWMIService = GetObject("winmgmts:" & _"{impersonationLevel=impersonate}!\\" & nomPC & "\root\cimv2")Set colInstalledPrinters = _ objWMIService.execQuery("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters Resultat = Resultat & "Nom: " & objPrinter.Name & " active : " _ & objPrinter.Default & vbLfNext MsgBox Resultat

Comment lister les propriétés des imprimantes installées ?

Auteurs : SilkyRoad ,

Cet exemple liste toutes les propriétés des imprimantes renvoyées pas la classe Win32_PrinterConfiguration :

VBS

Dim objWMIService, colPrinters, objItemDim strComputer On Error Resume NextstrComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colPrinters = objWMIService.ExecQuery("Select * from Win32_PrinterConfiguration")', , 48) For Each objItem In colPrinters Wscript.echo "Caption: " & objItem.Caption & vbCR & _ "Collate: " & objItem.Collate & vbCR & _ "Color: " & objItem.Color & vbCR & _ "Copies: " & objItem.Copies & vbCR & _ "Description: " & objItem.Description & vbCR & _ "DeviceName: " & objItem.DeviceName & vbCR & _ "DisplayFlags: " & objItem.DisplayFlags & vbCR & _ "DisplayFrequency: " & objItem.DisplayFrequency & vbCR & _ "DitherType: " & objItem.DitherType & vbCR & _ "DriverVersion: " & objItem.DriverVersion & vbCR & _ "Duplex: " & objItem.Duplex & vbCR & _ "FormName: " & objItem.FormName & vbCR & _ "HorizontalResolution: " & objItem.HorizontalResolution & vbCR & _ "ICMIntent: " & objItem.ICMIntent & vbCR & _ "ICMMethod: " & objItem.ICMMethod & vbCR & _ "LogPixels: " & objItem.LogPixels & vbCR & _ "MediaType: " & objItem.MediaType & vbCR & _ "Nom: " & objItem.Name & vbCR & _ "Orientation: " & objItem.Orientation & vbCR & _

Page 49: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 49 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBS "PaperLength: " & objItem.PaperLength & vbCR & _ "PaperSize: " & objItem.PaperSize & vbCR & _ "PaperWidth: " & objItem.PaperWidth & vbCR & _ "BitsPerPel: " & objItem.BitsPerPel & vbCR & _ "PelsHeight: " & objItem.PelsHeight & vbCR & _ "PelsWidth: " & objItem.PelsWidth & vbCR & _ "PrintQuality: " & objItem.PrintQuality & vbCR & _ "Scale: " & objItem.Scale & vbCR & _ "SettingID: " & objItem.SettingID & vbCR & _ "SpecificationVersion: " & objItem.SpecificationVersion & vbCR & _ "TTOption: " & objItem.TTOption & vbCR & _ "VerticalResolution: " & objItem.VerticalResolution & vbCR & _ "XResolution: " & objItem.XResolution & vbCR & _ "YResolution: " & objItem.YResolutionNext

Comment arrêter l'impression en cours et vider la file d'attente ?

Auteurs : SilkyRoad ,

VBS

Dim objWMIService, colInstalledPrinters, objPrinterDim strComputer strComputer = "."Set objWMIService = _ GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colInstalledPrinters = _ objWMIService.ExecQuery("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters objPrinter.CancelAllJobsNextWscript.echo "OK" Set objWMIService = NothingSet colInstalledPrinters = Nothing

Page 50: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 50 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WMI : Windows Management Instrumentation > Réseaux

Comment faire un ping réseau grâce à WMI ?

Auteurs : Forum ,

Pour Windows Server 2003, XP et supérieur, en utilisant la classe Win32_PingStatus :

VBS

strComputer = InputBox ("Adresse IP ou Url à 'Pinger' ") On Error Resume Nextmsgbox ("Ping de : " strComputer)Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address = '" & strComputer & "'")For Each objStatus in objPingIf objStatus.Statuscode = 0 Thenmsgbox ("TEST OK : " & objStatus.Statuscode) elsemsgbox ("TEST NOK : " & objStatus.Statuscode)End IfNext

Pour Windows 2000, en utilisant l'objet Shell de WScript:

VBS

strComputer = "10.169.6.16" 'Ping version Win2000Set objShell = CreateObject("WScript.Shell")Set objScriptExec = objShell.Exec( _ "ping -n 2 -w 1000 " & strComputer)strPingResults = LCase(objScriptExec.StdOut.ReadAll)If InStr(strPingResults, "perdus = 0") Then msgbox (strComputer & " repond au ping !")Else msgbox (strComputer & " na pas repondu au ping!")End If

lien : Microsoft MSDN: Win32_PingStatus

Comment obtenir les informations issues des cartes réseau à la manière d'un IPCONFIG ?

Auteurs : bbil ,

Le code suivant permet d'afficher l'état des configurations des cartes réseaux d'un PC :

VBS

Computer=InputBox ("Nom de l'ordinateur à tester où rien pour celui-ci : ","IpConfig")On error resume next set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE") If Err.Number<>0 Then wscript.echo " - non accessible -" Else for each IPConfig in IPConfigSet MsgBox " Configuration réseau de l'ordinateur " & computer & vbcrlf & vbcrlf & _ " Carte " & vbtab & vbtab & " : " & IPConfig.Description & vbcrlf & _ " adresse MAC " & vbtab & " : " & IPConfig.MACAddress & vbcrlf & _

Page 51: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 51 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

VBS " adresse IP " & vbtab & " : " & IPConfig.IPAddress(0) & vbcrlf & _ " DNSHostName " & vbtab & " : " & IPConfig.DNSHostName _ ,,"Configuration " Next End If

Page 52: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 52 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WSH : Windows Scripting Host

Définition

Auteurs : ThierryAIM ,

Source Microsoft® :WSH (l'abréviation pour Microsoft® Windows® Script Host) est un hôte de script indépendant du langage utilisé pourles moteurs de script compatibles avec Windows Script. Il vous permet d'écrire facilement des scripts très puissants et trèssouples à destination des plates-formes Windows 32 bits, que vous pouvez exécuter depuis le bureau de Windows ou l'invitede commande.Windows Script Host est idéal pour les scripts non interactifs, tels que les scripts de connexion, d'administration oud'automatisation d'ordinateurs.

Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript.

Page 53: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 53 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WSH : Windows Scripting Host > Shell (wshShell)

Comment exécuter un programme externe ?

Auteurs : bbil ,

La méthode Run de l'objet WshShell permet cela :Exécution "bloquante" de la calculatrice Windows.

VBS

Set WshShell = WScript.CreateObject("WScript.Shell")Return = WshShell.Run("calc" , 1, true) MsgBox "Fin utilisation calculatrice"

Paramètres de WshShell.Run strCommand,intWindowStyle,bWaitOnReturn- strCommand : Chaîne de caractère, ligne de commande à exécuter- intWindowStyle : 1 : Active la fenêtre dans sa taille et position d'origine- bWaitOnReturn : à True, attend la fin de l'exécution du programme avant d'effectuer la suite..

avec intWindowStyle :0 Masque la fenêtre et en active une autre.1 Active et affiche une fenêtre. Si la fenêtre est réduite ou agrandie, le système lui redonne sa taille et sa position d'origine.Une application doit spécifier cette indication lors du premier affichage de la fenêtre.2 Active la fenêtre et l'affiche en taille réduite.3 Active la fenêtre et l'affiche en taille agrandie.4 Affiche une fenêtre en respectant sa taille et sa position les plus récentes. La fenêtre active reste active.5 Active la fenêtre et l'affiche d'après sa taille et sa position actuelle.6 Réduit la fenêtre spécifiée et active la fenêtre de niveau supérieur suivante dans l'ordre alphabétique.7 Affiche la fenêtre sous l'aspect d'une fenêtre réduite. La fenêtre active reste active.8 Affiche la fenêtre dans son état actuel. La fenêtre active reste active.9 Active et affiche la fenêtre. Si la fenêtre est réduite ou agrandie, le système lui redonne sa taille et sa position d'origine.Une application doit spécifier cet indicateur lors de la restauration d'une fenêtre réduite.10 Définit l'état d'affichage en fonction de l'état du programme qui a démarré l'application.

Comment lister les dossiers spéciaux de Windows ?

Auteurs : ThierryAIM ,

La propriété SpecialFolders de l'objet WshShell permet d'obtenir les références aux dossiers spéciaux de Windows(Bureau, Favoris,etc...Liste des dossiers spéciaux de Windows disponibles :

• AllUsersDesktop• AllUsersStartMenu• AllUsersPrograms• AllUsersStartup• Desktop• Favorites• Fonts• MyDocuments• NetHood• PrintHood• Programs

Page 54: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 54 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

• Recent• SendTo• StartMenu• Startup• Templates

VBS

Set WshShell = WScript.CreateObject("WScript.Shell")For i = 0 to WshShell.SpecialFolders.Count -1 sf = sf & WshShell.SpecialFolders(i) & vbCrNextMsgBox sf,,"Répertoires spéciaux de Windows"

Accéder à un dossier particulier, dont on connaît le nom (le Bureau, dans l'exemple ci-dessous) :

VBS

Set WshShell = WScript.CreateObject("WScript.Shell")MsgBox WshShell.SpecialFolders("Desktop")

Comment écrire dans le journal d'évènements de Windows ?

Auteurs : Catbull ,

VBS

Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.LogEvent 0, "Execution du script"

lien : Microsoft Windows Script Host : LogEvent method

Comment simuler l'envoi de caractères vers une application externe ?

Auteurs : Forum , ThierryAIM ,

La méthode SendKeys de l'objet WScript permet d'envoyer une ou plusieurs entrées clavier à la fenêtre active.

Pour spécifier les touches d'actions (qui ne sont pas des caractères), voir le tableau ci-dessous :

Page 55: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 55 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Touche CodeRETOUR ARRIERE {BACKSPACE}, {BS}, ou {BKSP}VERR. MAJ {CAPSLOCK}VERR. NUM {NUMLOCK}ARRET DEFIL {SCROLLLOCK}IMPR. ECRAN {PRTSC} (Ne peut être envoyé à une

application externe)FLÈCHE VERS LE BAS, LE HAUT,A GAUCHE, A DROITE

{DOWN}, {UP}, {LEFT}, {RIGHT}

PAGE SUIVANTE, PRECEDENTE {PGDN}, {PGUP}ENTREE {ENTER} ou ~ORIGINE {HOME}FIN {END}ECHAP {ESC}INSERT {INSERT} ou {INS}SUPPR {DELETE} ou {DEL}TAB {TAB}F1 à F16 {F1} ... {F16}

Les touches d'altération :

• Maj : +• Ctrl : ^• Alt : %

Elles s'utilisent en combinaison avec les touches à émettre :

• "+ab" envoie Ab• "+(ab)" envoie AB• "{+a 5}" envoie AAAAA

Exemple d'utilisationOuvrir la calculatrice et effectuer une opération :

VBS

Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" '-- Ouvre la calculatrice de Windows WScript.Sleep 200 WshShell.AppActivate "Calculatrice" '-- Active l'application WScript.Sleep 200 WshShell.SendKeys "4*2" WScript.Sleep 100 WshShell.SendKeys "{Enter}"

Comment créer un raccourci vers un site internet où un programme sur le bureau de windows

Auteurs : Forum ,

Source Microsoft VBScript

Dim Shell, DesktopPath, URL

Page 56: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 56 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Source Microsoft VBScript Set Shell = CreateObject("WScript.Shell") DesktopPath = Shell.SpecialFolders("Desktop") Set URL = Shell.CreateShortcut(DesktopPath & "\MonForumPreferé.URL") URL.TargetPath = "http://www.developpez.net/forums" URL.WorkingDirectory = "c:\tmp" URL.Save

On garde le même principe pour un programme :

Dim Shell, DesktopPath, URLSet Shell = CreateObject("WScript.Shell")DesktopPath = Shell.SpecialFolders("Desktop")Set URL = Shell.CreateShortcut(DesktopPath & "\monraccourci.lnk")URL.IconLocation = "monicone.ico"URL.TargetPath = "chemin\monexe.exe"URL.WorkingDirectory = "c:\tmp"URL.Arguments = "-para monparametre"URL.SaveSET oFS = nothing

Page 57: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 57 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WSH : Windows Scripting Host > Réseau (wshNetwork)

Comment connaître le nom réseau de l'ordinateur ?

Auteurs : argyronet ,

VBS

Set wshNetwork = CreateObject("Wscript.Network")MsgBox wshNetwork.ComputerName

Comment connaître le nom de l'utilisateur réseau courant ?

Auteurs : Jean-Marc Rabilloud ,

VBS

Set wshNetwork = CreateObject("Wscript.Network")MsgBox wshNetwork.UserName

Comment connaître le nom de domaine de l'utilisateur courant ?

Auteurs : ThierryAIM ,

VBS

Set wshNetwork = CreateObject("Wscript.Network")MsgBox wshNetwork.UserDomain

Comment "mapper" une unité réseau à la manière du net use du dos ?

Auteurs : bbil ,

VBS

Set WshNetwork = WScript.CreateObject("WScript.Network")WshNetwork.MapNetworkDrive "R:","\\NOM_ORDINATEUR\REPERTOIRE",false,"NOM_UTILISATEUR","MOT_DE_PASSE"

Comment "mapper" les imprimantes réseau ?

Auteurs : ThierryAIM ,

VBS

Set WshNetwork = WScript.CreateObject("WScript.Network")Set oPrinters = WshNetwork.EnumPrinterConnectionsFor i = 0 to oPrinters.Count - 1 Step 2 MapPrinters = MapPrinters & "Port : " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1) & vbCrNextMsgBox MapPrinters,,"Mappage Imprimantes Réseau"

Page 58: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 58 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

Sommaire > WSH : Windows Scripting Host > Autres

Comment accéder aux variables d'environnement de Windows ?

Auteurs : ThierryAIM ,

L'objet WshEnvironment contient les variables d'environnement de Windows:

Vous pouvez accéder aux variables de type :• Process• System• User• Volatile

L'exemple suivant affiche le nom de l'utilisateur courant :

VBS

Set WshShellObj = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShellObj.Environment("Process") WScript.Echo WshProcessEnv("USERNAME")

L'exemple suivant affiche la variable d'environnement PATH du système :

VBS

Set WshShell = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShell.Environment("Process")WScript.Echo "PATH = " & WshProcessEnv("PATH")

L'exemple suivant affiche les informations du processeur :

VBS

Set WshShell = WScript.CreateObject("WScript.Shell")Set WshSysEnv = WshShell.Environment("System")WScript.Echo WshSysEnv("PROCESSOR_ARCHITECTURE") & vbCr _ & WshSysEnv("PROCESSOR_IDENTIFIER") & vbCr _ & WshSysEnv("PROCESSOR_LEVEL") & vbCr _ & WshSysEnv("PROCESSOR_REVISION")

La propriété Count de l'objet WshEnvironment renvoie le nombre de variables d'environnement dans le typesélectionné :

VBS

Set WshShell = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShell.Environment("Process")WScript.Echo WshProcessEnv.Count

Comment créer ou effacer une variable environnement ?

Auteurs : l_autodidacte , ProgElecT , bbil ,

La propriété Environment de l'objet WshShell renvoie une collection WshEnvironment de variables.

Page 59: forum VB Aidez-nous à faire vivre cette FAQ en …demay.iut.lr.free.fr/doc/2A/IC1/VBScript/FAQ VBScript.pdf · VBScript est un langage interprété, ne nécessitant pas de compilateur

- 59 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.

http://vb.developpez.com/

La création d'une variable se fait lors de l'affectation à une valeur, la méthode remove permet d'effacer la variableenvironnement

vbDim WshShell, WshProcessEnvSet WshShell = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShell.Environment("Process")'Créer une variable d'environnementWshProcessEnv("DVP") = "developpez.com"'Affiche la variableWScript.Echo WshShell.ExpandEnvironmentStrings("La valeur de la variable DVP = '%DVP%'")WshProcessEnv.Remove "DVP"WScript.Echo WshShell.ExpandEnvironmentStrings("Aprés l'avoir effacée : '%DVP%'")

Comment jouer un son ?

Auteurs : Forum , bbil ,

En utilisant un appel à l'application magnétophone de Windows.

vbOption explicitDim stFicSon,WshShellSet WshShell = WScript.CreateObject("WScript.Shell")stFicSon = "C:\WINDOWS\Media\chimes.wav"WshShell.Run "sndrec32 /play /embedding /close " & stFicSon , 0, true

Appel dynamique d'une fonction via une variable ?

Auteurs : omen999 ,

en utilisant GetRef

vbFunction AddNum(lNum1,lNum2) AddNum = lNum1 + lNum2End FunctionFunction MultNum(lNum1,lNum2) MultNum = lNum1 * lNum2 End FunctionSet FuncVar = GetRef("AddNum")MsgBox FuncVar(5,6)Set FuncVar = GetRef("MultNum")MsgBox FuncVar(5,6)