FAQ VBScript

Transcription

FAQ VBScript
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.
Ont contribué à cette FAQ :
Forum - Jean-Marc Rabilloud - Romain Puyfoulhoux Baptiste Wicht - Khorne - shwin - Sadneth - ThierryAIM bbil - SilkyRoad - Catbull - Tofalu - argyronet - omen999
- cedric600 - ckeromen - l_autodidacte - ProgElecT -
1. Généralités (2) ........................................................................................................................................................................... 4
2. VB Script (71) ........................................................................................................................................................................... 5
2.1. Généralités (10) .................................................................................................................................................................6
2.2. Fichiers : le FileSystemObject (27) ................................................................................................................................11
2.2.1. Généralités (2) ........................................................................................................................................................12
2.2.2. Accès aux Disques (4) ...........................................................................................................................................13
2.2.3. Accès aux Dossiers/Répertoires (9) .......................................................................................................................15
2.2.4. Accès aux Fichiers (12) .........................................................................................................................................20
2.3. Applications Externes (5) ............................................................................................................................................... 27
2.4. Les Fichiers de Script Windows (4) .............................................................................................................................. 29
2.5. XML (6) ..........................................................................................................................................................................31
2.6. Base de donnée (1) ......................................................................................................................................................... 35
2.7. Manipulation des chaînes de caractères (9) ................................................................................................................... 36
2.8. Manipulation des dates (3) ............................................................................................................................................. 41
2.9. Manipuler la base de registre (6) ................................................................................................................................... 42
3. WMI : Windows Management Instrumentation (9) ................................................................................................................ 45
3.1. Processus : classe Win32_Process (2) ............................................................................................................................46
3.2. Services : classe Win32_Service (1) .............................................................................................................................. 47
3.3. Imprimantes : classe Win32_Printer (3) .........................................................................................................................48
3.4. Réseaux (2) ..................................................................................................................................................................... 50
4. WSH : Windows Scripting Host (15) ..................................................................................................................................... 52
4.1. Shell (wshShell) (5) ........................................................................................................................................................53
4.2. Réseau (wshNetwork) (5) ...............................................................................................................................................57
4.3. Autres (4) ........................................................................................................................................................................ 58
-3Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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")
-4Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
-5Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 Visual
Basic.
Apparu avec Internet Explorer 3, il est utilisable soit en ligne de commande, soit directement dans l'environnement
Windows 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 est
wscript.exe
L'é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" non
bloquante 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 toutes
les variables utilisées dans le code.
Mais, contrairement aux langages Visual Basic 6 (VB6) ou Visual Basic for Application (VBA), en VBScript, le typage
des 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 ...
-6Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
Dim
Dim
Dim
i
MonText
toto, titi
arg1, arg2, arg3
Déclarations incorrectes :
Dim i As Integer
Dim 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 s
MsgBox "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
-7Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
MsgBox 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",vbCritical
Else
Set oFolderItem = oFolder.Self
MsgBox oFolderItem.path
End If
Set oFolderItem = Nothing
Set oFolder = Nothing
Set oShell = Nothing
Quelques compléments intéressants à cette fonction :
Supprimer le bouton "Créer un nouveau dossier" :
VBS
Const RETURNONLYFSDIRS = &H1
-8Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
Const NONEWFOLDERBUTTON = &H200
Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS +
NONEWFOLDERBUTTON, "c:\")
Ajouter un label d'aide en ligne :
VBS
Const RETURNONLYFSDIRS = &H1
Const NONEWFOLDERBUTTON = &H200
Const 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 les
deux 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 :
-9Les 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
vbOKOnly
vbOKCancel
0
1
Valeur
vbAbortRetryIgnore
2
vbYesNoCancel
3
vbYesNo
4
vbRetryCancel
5
Description
Affiche le bouton OK.
Affiche les boutons OK et
Annuler.
Affiche les boutons Terminer,
Réessayer et Ignorer.
Affiche les boutons Oui, Non
et Annuler.
Affiche les boutons Oui et
Non.
Affiche les boutons Réessayer
et Annuler.
on peut ajouter au type de bouton le type d'icône souhaité :
Valeur
16
32
48
64
Type d'icône
Affiche l'icône Stop.
Affiche l'icône Point d'interrogation.
Affiche l'icône Point d'exclamation.
Affiche l'icône Informations.
vb
Set 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
-1
1
2
3
4
5
6
7
Description
Pas de réponse
OK
Annuler
Abandonner
Réessayer
Ignorer
Oui
Non
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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. Cet
ensemble de classe hiérarchique possède une unique racine : le FileSystemObject, plus communément connu sous le
nom de FSO
celui-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 oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
Ensuite toute utilisation de FileSystemObject passera par cet objet.
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 oFSO
Set 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 sera
nulle 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,oDrv
Set 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 chemin
d'accès
Remarque: la méthode n'effectue aucune vérification (existence...) elle effectue juste une "extraction" de chaîne de
caractère.
exemple d'utilisation :
VBS
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
MsgBox oFSO.GetDriveName(C:\Program Files\Fichiers communs")
renvoi C:
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 oFSO
Set 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 à parcourir
Dim oFSO,oFld
Set 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
Next
End 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)
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 cette
proprié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 à parcourir
Dim oFSO,oFld
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\Program Files\Fichiers communs"
If oFSO.FolderExists(stRep) Then
Set 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 repertoire
Set 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:\")
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 Explicit
Dim ofso
Set 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 If
End 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 oFSO
Set 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,oFld
Set 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 oFSO
Set 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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,oFld
Set 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
les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers en
lecture 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 oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
oFSO.MoveFolder "c:\tmp2","c:\tmp3"
où en utilisant la méthode move de l'objet Folder
Dim oFSO,oFld
Set 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, i
Dim oShell, oApp, oFolder, oCTF, oFile
Dim 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 zip
Set oCTF = oFileSys.CreateTextFile(Destination, True)
oCTF.Write MyBinary
oCTF.Close
Set oCTF = Nothing
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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/
en lectur
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 = Nothing
On Error Resume Next
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 oFSO
Set 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 à parcourir
Dim oFSO,oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\Tmp"
If oFSO.FolderExists(stRep) Then
For each oFl in oFSO.GetFolder(stRep).Files
Wscript.Echo oFl.Name
Next
End 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 pour
ShortName. 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,oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
stFichier = "c:\tmp\Nouveau Document texte.txt"
If oFSO.FileExists(stFichier) Then
Set 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 aux
proprié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 fichier
For i = 0 to 34
Wscript.Echo "[" & i & "] " & oFolder.GetDetailsOf(oFolder.Items, i
oFolder.GetDetailsOf(oFichier, i)
Next
) & " : " &
le résultat :
D:\>PropEtendues.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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'à 266
sous 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 oFSO
Set 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,oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 oFSO
Set 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,oFl
Set 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 lecture
les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers en
lecture 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 oFSO
Set 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,oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
oFl.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'openTextFile
OpenTextFile(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.
vb
Const TristateTrue = -1
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
set 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, f
Dim 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.
vb
Dim oFSO,oFld
Set 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
Next
end sub
'
' Listing des fichiers du répertoire
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
Next
End sub
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 = True
Set classeur = xlapp.Workbooks.add
Set feuille = xlapp.ActiveSheet
feuille.Range("A1") = "Rajout du texte en cellule A1"
Classeur.Saveas "c:\tmp\MonClasseur"
classeur.Close True 'quitte en sauvant
xlApp.quit
Set classeur = Nothing
Set 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 IE
Set IE = Wscript.CreateObject("InternetExplorer.Application")
IE.Visible = 1
IE.navigate "http://www.developpez.net/forums/login.php"
Do While (IE.Busy)
WScript.Sleep 10
Loop
Set 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 sur
les touches Windows et L, on peut faire un appel à la fonction LockWorkStation de User32.dll grâce à "l'utilitaire"
rundll32.exe, ce qui donne:
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
WshShell.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
vb
Set 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 oVerb
Next
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 :
vb
Set objShell = CreateObject("Shell.Application")
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
'Référence à Shell32.dll
Bien entendu cela impose la présence d'une application (Acrobat Reader...) gérant les .pdf.
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 au
format 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 utiliser
en 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 & 1
End function
Function Fct2 (st)
Fct2 = st & 2
End 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"
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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_VBS
Pour exécuter les 2 tâches en ligne de commande :
cscript myScript.wsf //job:MaTache_1_VBS //job:MaTache_2_VBS
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 XML
Set 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 XML
Set oRacine = xmlDoc.createElement("Racine")
' Ajouter la racine dans le document
xmlDoc.appendChild oRacine
' Ajouter un élément
Set oElement = xmlDoc.selectSingleNode("Racine")
Set oElement = xmlDoc.createElement("element")
xmlDoc.documentElement.appendChild oElement
' positionnement sur la racine
' création d'un fils membre
' crée le fils de la racine
' Ajouter des champs balises
Set oNom = xmlDoc.createElement("nom")
oNom.Text = "LENOM"
oElement.appendChild oNom
Set oNom = Nothing
Set oPrenom = xmlDoc.createElement("prenom")
oPrenom.Text = "Prénom"
oElement.appendChild oPrenom
Set oPrenom = Nothing
Set 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 = True
wrt.encoding = "ISO-8859-1"
wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet Stream
Set rdr.contentHandler = wrt
Set rdr.errorHandler = wrt
rdr.Parse xmlDoc
wrt.flush
' Sauver le fichier créé
oStream.SaveToFile "test1.xml", 2
' Détruire les objets
Set rdr = Nothing
Set wrt = Nothing
Set xmlDoc = Nothing
Résultat :
XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 XML
Set xmlDoc=CreateObject("Microsoft.XMLDOM")
'La desactivation du mode asynchrone permet de charger entièrement le document en mémoire avant le traitement
xmlDoc.Async="false"
'Charger le document en mémoire
xmlDoc.Load("c:\test1.xml")
For each x in xmlDoc.documentElement.childNodes
Msgbox x.nodename & " : " & x.text
Next
Set 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 XML
Set 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 XML
Set oRacine = xmlDoc.createElement("Racine")
' Ajouter un attribut Date de création du document
oRacine.setAttribute "Créé_le", FormatDateTime(Date, vbGeneralDate)
' Ajouter la racine dans le document
xmlDoc.appendChild oRacine
' Ajouter un élément
Set oElement = xmlDoc.selectSingleNode("Racine")
Set oElement = xmlDoc.createElement("element")
' positionnement sur la racine
' création d'un fils membre
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 balises
Set oNom = xmlDoc.createElement("nom")
oNom.Text = "LENOM"
oElement.appendChild oNom
Set oNom = Nothing
Set oPrenom = xmlDoc.createElement("prenom")
oPrenom.Text = "Prénom"
oElement.appendChild oPrenom
Set oPrenom = Nothing
Set 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 informations
qui 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éthode
getElementsByTagName :
VBS
'-- Lire un doc XML
Set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitement
xmlDoc.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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 XML
Set 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 squelette
en VBScript. Remplacer les expressions entre accolades par les valeurs réelles ou des paramètres (ex.: {namespace}) :
vb
Dim WshShell
Set WshShell=CreateObject("WScript.Shell")
Dim xmlDoc
set xmlDoc=CreateObject("Msxml2.DOMDocument.6.0")
xmlDoc.async=false
xmlDoc.validateOnParse=true
Dim xmlSchema
set xmlSchema=CreateObject("Msxml2.DOMDocument.6.0")
xmlSchema.async=false
xmlSchema.validateOnParse=true
xmlSchema.load {le chemin d acces au schema}
Dim xsdCache
set xsdCache=CreateObject("Msxml2.XMLSchemaCache.6.0")
xsdCache.add {namespace}, xmlSchema
Set xmlDoc.schemas = xsdCache
xmlDoc.load {le chemin d acces au fichier XML}
Set myErr=xmlDoc.parseError
If(myErr.errorCode<>0)Then
WScript.Echo("errorReason="+myErr.reason)
else
WScript.Echo("ok")
End If
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 :
vb
Const dbInteger =3
Const dbText = 10
Set 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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)
VBS
Dim st
st="Bienvenue sur DVP"
Wscript.Echo Left(st,9)
Wscript.Echo Mid(st,11,3)
Wscript.Echo Right(st,3)
Résultat
Bienvenue
sur
DVP
Nota: Pour la fonction Mid si le troisième paramètre (NombreDeCaracteres) est omis ou supérieur au nombre de
caractè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ères
qui lui succèdent sont retournés.
ce qui donne :
VBS
Dim st
st="Bienvenue sur DVP"
Wscript.Echo Mid(st,11)
Wscript.Echo Mid(st,11,255)
Résultat
sur DVP
sur DVP
Comment connaitre la longueur d'un chaîne ?
Auteurs : bbil ,
En utilisant la fonction Len() :
VBS
Dim st
st="Bienvenue sur DVP"
Wscript.Echo Len(st)
Résultat
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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ésultat
17
Comment concaténer deux chaînes ?
Auteurs : bbil ,
L'opérateur usuel de concaténation est : &
VBS
Dim st1
Dim 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 dvp
Bienvenue 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 dvp
12
et en opérateur d'addition lorsque l'un des opérantes est numérique
VBS
Wscript.Echo "3" + 2
Wscript.Echo 1+2
Résultat
5
3
Une mauvaise utilisation de l'opérateur +, peut provoquer une erreur de type :
Erreur d'exécution Microsoft VBScript: Type incompatible: '[string: "a"]'
VBS
Wscript.Echo "a" + 1
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
VBS
Dim st,i,tb
st="Antoine,Pierre,Jacques,Alain"
tb = split(st,",")
For i = lbound(tb) to ubound(tb)
Wscript.echo tb(i)
next
Résultat
Antoine
Pierre
Jacques
Alain
Nota: les fonctions Lbound et Ubound permettent de renvoyer les limites basse et haute des index d'un tableau. La
fonction 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 un
séparateur :
VBS
Dim st,tb(3)
Tb(0)="Antoine"
tb(1)="Pierre"
tb(2)="Jacques"
tb(3)="Alain"
st = join(tb,",")
Wscript.echo st
Résultat
Antoine,Pierre,Jacques,Alain
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 la
position de son premier caractère dans ch1, sinon la fonction renvoie 0.
vb
pos = InStr(4, "Nous sommes au mois de Juillet.", "Juillet")
pos = InStr(27, "Nous sommes au mois de Juillet.", "Juillet")
'renvoie 24
'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. Il
faut 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 recherche
en appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitez
faire 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.
vbs
Public 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 :
vbs
Set RegularExpressionObject = New RegExp
Ensuite, il faut le paramétrer en fonction de la recherche :
With RegularExpressionObject
.Pattern = Pattern
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 = Boolean
End 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 :
vbs
Set 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 = False
End 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))
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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. Voici
ce 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'heure
courante 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 VBS
possè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.
VBS
WScript.Echo Day(Now)& "."& Month(Now)& "."& Day(Now)& "."& Year(Now)& " "& Hour(Now)& ":"& Minute(Now)& ":"& Se
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 la
semaine... 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.
vb
dDate = CDate("1/2/10")
MsgBox Right("0" & Month(dDate),2)
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 registre
2
RegRead : pour lire une entrée de la base de registre
3
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, des
abréviations peuvent être utilisées :
Nom de clé racine
Abréviation
HKEY_CURRENT_USER HKCU
HKEY_LOCAL_MACHINEHKLM
HKEY_CLASSES_ROOT HKCR
HKEY_USERS
HKEY_USERS
HKEY_CURRENT_CONFIG
HKEY_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 WshShell
la documentation Microsoft nous décrit la fonction ainsi :
object.RegWrite(strName, anyValue [,strType])
Arguments
object
Objet 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 ou
modifier. 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îne
indiquant le type de données de la valeur
Le paramètre facultatif strType permet d'indiquer le type données :
Nom de clé racine
Chaîne
Chaîne
Nombre entier
Nombre entier
strType
REG_SZ
REG_EXPAND_SZ
REG_DWORD
REG_BINARY
vb
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\dvp-faqvbs\montest",now
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 peu
comporter des abréviations ..)
vb
Dim WshShell
Set 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 de
la clé ( qui peu comporter des abréviations ..)
vb
Dim WshShell
Set 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 \):
vb
Dim WshShell
Set 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 du
Windows Script Host Object Model.
vb
Dim MaCle
Set MaCle = CreateObject("WScript.Shell")
'nom de votre type de fichier
MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\", "Test Ext", "REG_SZ"
'commande a exécuter pour ouvrir les fichiers de ce type
MaCle.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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
MaCle.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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 de
management 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 et
simplement à 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 Terminate
pour 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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, objPrinter
Dim 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 & vbLf
Next
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, objItem
Dim strComputer
On Error Resume Next
strComputer = "."
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 & _
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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.YResolution
Next
Comment arrêter l'impression en cours et vider la file d'attente ?
Auteurs : SilkyRoad ,
VBS
Dim objWMIService, colInstalledPrinters, objPrinter
Dim strComputer
strComputer = "."
Set objWMIService = _
GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = _
objWMIService.ExecQuery("Select * from Win32_Printer")
For Each objPrinter In colInstalledPrinters
objPrinter.CancelAllJobs
Next
Wscript.echo "OK"
Set objWMIService = Nothing
Set colInstalledPrinters = Nothing
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 Next
msgbox ("Ping de : " strComputer)
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\
\").ExecQuery("select * from Win32_PingStatus where address = '" & strComputer & "'")
For Each objStatus in objPing
If objStatus.Statuscode = 0 Then
msgbox ("TEST OK : " & objStatus.Statuscode)
else
msgbox ("TEST NOK : " & objStatus.Statuscode)
End If
Next
Pour Windows 2000, en utilisant l'objet Shell de WScript:
VBS
strComputer = "10.169.6.16"
'Ping version Win2000
Set 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 & _
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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é pour
les moteurs de script compatibles avec Windows Script. Il vous permet d'écrire facilement des scripts très puissants et très
souples à destination des plates-formes Windows 32 bits, que vous pouvez exécuter depuis le bureau de Windows ou l'invite
de commande.
Windows Script Host est idéal pour les scripts non interactifs, tels que les scripts de connexion, d'administration ou
d'automatisation d'ordinateurs.
Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript.
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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) & vbCr
Next
MsgBox 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 :
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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
RETOUR ARRIERE
VERR. MAJ
VERR. NUM
ARRET DEFIL
IMPR. ECRAN
FLÈCHE VERS LE BAS, LE HAUT,
A GAUCHE, A DROITE
PAGE SUIVANTE, PRECEDENTE
ENTREE
ORIGINE
FIN
ECHAP
INSERT
SUPPR
TAB
F1 à F16
Code
{BACKSPACE}, {BS}, ou {BKSP}
{CAPSLOCK}
{NUMLOCK}
{SCROLLLOCK}
{PRTSC} (Ne peut être envoyé à une
application externe)
{DOWN}, {UP}, {LEFT}, {RIGHT}
{PGDN}, {PGUP}
{ENTER} ou ~
{HOME}
{END}
{ESC}
{INSERT} ou {INS}
{DELETE} ou {DEL}
{TAB}
{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'utilisation
Ouvrir 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
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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, URL
Set 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.Save
SET oFS = nothing
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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.EnumPrinterConnections
For i = 0 to oPrinters.Count - 1 Step 2
MapPrinters = MapPrinters & "Port : " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1) & vbCr
Next
MsgBox MapPrinters,,"Mappage Imprimantes Réseau"
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 type
sé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.
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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 variable
environnement
vb
Dim WshShell, WshProcessEnv
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshProcessEnv = WshShell.Environment("Process")
'Créer une variable d'environnement
WshProcessEnv("DVP") = "developpez.com"
'Affiche la variable
WScript.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.
vb
Option explicit
Dim stFicSon,WshShell
Set 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
vb
Function AddNum(lNum1,lNum2)
AddNum = lNum1 + lNum2
End Function
Function MultNum(lNum1,lNum2)
MultNum = lNum1 * lNum2
End Function
Set FuncVar = GetRef("AddNum")
MsgBox FuncVar(5,6)
Set FuncVar = GetRef("MultNum")
MsgBox FuncVar(5,6)
- 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 sources
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucune
reproduction, 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 Developpez
LLC. 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/

Documents pareils