forum vb aidez-nous à faire vivre cette faq en …demay.iut.lr.free.fr/doc/2a/ic1/vbscript/faq...
TRANSCRIPT
Date de publication : 13/01/2007
Dernière mise à jour : 28/02/2007
Cette FAQ VB Script est le fruit de la collaboration de l'équipe de rédaction et desmembres du forum VB.Aidez-nous à faire vivre cette FAQ en participant au forum Vos contributionsVBScript.Pour toutes questions ou tous problèmes concernant cette FAQ, vous pouvez contacterpar MP ThierryAIM ou bbil.L'équipe de rédaction de Developpez.com vous remercie pour votre participationpassée et à venir.
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 -
- 3 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
1. Généralités (2) ........................................................................................................................................................................... 42. VB Script (71) ........................................................................................................................................................................... 5
2.1. Généralités (10) .................................................................................................................................................................62.2. Fichiers : le FileSystemObject (27) ................................................................................................................................11
2.2.1. Généralités (2) ........................................................................................................................................................122.2.2. Accès aux Disques (4) ...........................................................................................................................................132.2.3. Accès aux Dossiers/Répertoires (9) .......................................................................................................................152.2.4. Accès aux Fichiers (12) .........................................................................................................................................20
2.3. Applications Externes (5) ............................................................................................................................................... 272.4. Les Fichiers de Script Windows (4) .............................................................................................................................. 292.5. XML (6) ..........................................................................................................................................................................312.6. Base de donnée (1) .........................................................................................................................................................352.7. Manipulation des chaînes de caractères (9) ................................................................................................................... 362.8. Manipulation des dates (3) ............................................................................................................................................. 412.9. Manipuler la base de registre (6) ................................................................................................................................... 42
3. WMI : Windows Management Instrumentation (9) ................................................................................................................ 453.1. Processus : classe Win32_Process (2) ............................................................................................................................463.2. Services : classe Win32_Service (1) .............................................................................................................................. 473.3. Imprimantes : classe Win32_Printer (3) .........................................................................................................................483.4. Réseaux (2) ..................................................................................................................................................................... 50
4. WSH : Windows Scripting Host (15) ..................................................................................................................................... 524.1. Shell (wshShell) (5) ........................................................................................................................................................534.2. Réseau (wshNetwork) (5) ...............................................................................................................................................574.3. Autres (4) ........................................................................................................................................................................ 58
- 4 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > Généralités
Où trouver l'aide en ligne pour VBScript ?
Auteurs : omen999 , bbil ,
Télécharger le fichier scd56fr.exe sur le site de Microsoft.
Comment écrire un script VBS ?
Auteurs : ThierryAIM ,
Un script VBS peut être écrit avec n'importe quel éditeur de texte ASCII.Vous pouvez utiliser le bloc-notes ou Wordpad de Windows, ou mieux, un éditeur à coloration syntaxique comme
notepad++ (gratuit et "open source")
- 5 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script
- 6 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Généralités
Définition
Auteurs : ThierryAIM ,
VBScript (Microsoft Visual Basic Scripting Edition) est un langage de script d'usage général, dérivé de Microsoft VisualBasic.Apparu avec Internet Explorer 3, il est utilisable soit en ligne de commande, soit directement dans l'environnementWindows ou dans la plupart des navigateurs web.
VBScript est un langage interprété, ne nécessitant pas de compilateur spécifique, contrairement aux langages compilés,mais il a besoin d'un interpréteur, capable de comprendre et d'exécuter les instructions contenues dans le script.Installé de base depuis Windows 98, l'interpréteur le plus couramment utilisé dans l'environnement Windows estwscript.exeL'équivalent de wscript.exe pour une exécution en ligne de commande est cscript.exe
Les fichiers de type VBScript ont généralement l'extension .vbs
Comment changer l'interpréteur de script par défaut ?
Auteurs : bbil ,
Deux interpréteurs de script sont disponible sous Windows :
• Wscript : pour le mode graphique• Cscript : pour le mode texte
pour changer l'interpréteur par défaut, on utilise la commande :Pour choisir Wscript :
wscript //H:WScript
Pour choisir Cscript :
wscript //H:CScript
Nota : On préférera utiliser CScript, qui présente l'avantage d'avoir une commande d'affichage "Wscript.Echo" nonbloquante là où WScript utilise une boîte de message (message box) réclamant une action de l'opérateur
Le typage des variables
Auteurs : ThierryAIM ,
Comme dans tous les langages, même si VBScript est très permissif à ce niveau, il est recommandé de déclarer toutesles variables utilisées dans le code.Mais, contrairement aux langages Visual Basic 6 (VB6) ou Visual Basic for Application (VBA), en VBScript, le typagedes variables se fait au moment de l'assignation, et non pas lors de la déclaration.Autrement dit, vous ne devez pas utiliser de déclaration Dim ... As ... , mais simplement Dim ...
- 7 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Déclarations correctes :
VBS
Dim iDim MonTextDim toto, titiDim arg1, arg2, arg3
Déclarations incorrectes :
Dim i As IntegerDim MonText As String
Comment programmer une pause dans le code ?
Auteurs : bbil ,
VBS
MsgBox "Appuyer sur OK pour lancer la pause"Wscript.Sleep 2000 ' durée en ms .. 2000 => 2 sMsgBox "2 secondes Plus tard"
Comment interrompre un script ?
Auteurs : Forum ,
La méthode Quit permet de mettre fin à un script immédiatement :
VBS
If MyVar = 0 Then WScript.Quit
Comment obtenir le nom et chemin complet d'un script en cours d'exécution ?
Auteurs : ThierryAIM ,
Affiche le nom et chemin complet du script en cours d'exécution :
VBS
MsgBox WScript.ScriptFullName
Affiche le nom du script en cours d'exécution :
VBS
- 8 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBSMsgBox WScript.ScriptName
Comment utiliser les arguments en ligne de commande ?
Auteurs : bbil ,
Grâce à l'objet WshArguments ..créer un fichier msgbox.vbs code :
msgbox.VBS
If wscript.Arguments.length = 2 Then MsgBox wscript.arguments(0),wscript.arguments(1), "FaqVbs"Else wscript.Echo "Nombre d'arguments incorrect" Wscript.Echo "MsgBox Message iType"End if
puis pour l'appel du code exécuter en ligne de commande :
Ligne de commande
MsgBox "Bonjour à tous " 48
Comment utiliser la boîte de dialogue de sélection d'un répertoire ?
Auteurs : bbil , ThierryAIM ,
Avec la méthode BrowseForFolder de l'objet Shell.Application :
VBS
Const RETURNONLYFSDIRS = &H1
Set oShell = CreateObject("Shell.Application")Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS, "c:\")If oFolder is Nothing Then MsgBox "Abandon opérateur",vbCriticalElse Set oFolderItem = oFolder.Self MsgBox oFolderItem.pathEnd If
Set oFolderItem = NothingSet oFolder = NothingSet oShell = Nothing
Quelques compléments intéressants à cette fonction :
Supprimer le bouton "Créer un nouveau dossier" :
VBS
Const RETURNONLYFSDIRS = &H1
- 9 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBSConst NONEWFOLDERBUTTON = &H200
Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON, "c:\")
Ajouter un label d'aide en ligne :
VBS
Const RETURNONLYFSDIRS = &H1Const NONEWFOLDERBUTTON = &H200Const UAHINT = &H100
Set oFolder = oShell.BrowseForFolder(&H0&, "Choisir un répertoire", RETURNONLYFSDIRS + NONEWFOLDERBUTTON + UAHINT, "c:\")
Comment ouvrir la boîte de dialogue de sélection d'un fichier ?
Auteurs : Forum , l_autodidacte ,
En utilisant la classe SAFRCFileDlg.FileOpen découlant de Safrcdlg.dll:
vb Set objDialog=CreateObject("SAFRCFileDlg.FileOpen") ObjDialog.OpenFileOpenDlg strFileName=objDialog.FileName Wscript.Echo strFileName Set objDialog=Nothing
ou en utilisant la classe UserAccounts.CommonDialog ou encore UserAccounts.CommonDialog.1 découlant toutes lesdeux de NUSRMGR.CPL:
Set oDlg=CreateObject("UserAccounts.CommonDialog.1") oDlg.Filter="Tous les fichiers(*.*)|*.*|Fichier text(*.txt)|*.txt" oDlg.FilterIndex=2 oDlg.InitialDir="C:\" oDlg.ShowOpen Wscript.echo oDlg.filename set oDlg= nothing
Il est à noter que ces deux méthodes fonctionnent sous Windows XP mais pas sous Vista ni Windows 7(testé).
Faire disparaitre une MsgBox au bout d'un certain temps ?
Auteurs : omen999 , bbil ,
Popup(strText,[nSecondsToWait],[strTitle],[nType]) Les types disponibles sont :
- 10 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Constante Valeur DescriptionvbOKOnly 0 Affiche le bouton OK.vbOKCancel 1 Affiche les boutons OK et
Annuler.vbAbortRetryIgnore 2 Affiche les boutons Terminer,
Réessayer et Ignorer.vbYesNoCancel 3 Affiche les boutons Oui, Non
et Annuler.vbYesNo 4 Affiche les boutons Oui et
Non.vbRetryCancel 5 Affiche les boutons Réessayer
et Annuler.
on peut ajouter au type de bouton le type d'icône souhaité :
Valeur Type d'icône16 Affiche l'icône Stop.32 Affiche l'icône Point d'interrogation.48 Affiche l'icône Point d'exclamation.64 Affiche l'icône Informations.
vbSet oShell = WScript.CreateObject("WScript.Shell")iRet = oShell.Popup ("Bonjour le monde ",10,"10s avant clic sur OK",vbOKCancel+16)Wscript.Echo iRet
la fonction renvoie :
Valeur Description-1 Pas de réponse1 OK2 Annuler3 Abandonner4 Réessayer5 Ignorer6 Oui7 Non
- 11 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Fichiers : le FileSystemObject
- 12 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Fichiers : le FileSystemObject > Généralités
Qu'est ce que le FileSystemObject ?
Auteurs : Tofalu , bbil ,
Microsoft à mis au point un ensemble d'objets regroupés au sein de la librairie Microsoft Scripting Runtime. Cetensemble de classe hiérarchique possède une unique racine : le FileSystemObject, plus communément connu sous lenom de FSOcelui-ci permet d'ajouter, de déplacer, de modifier, de créer ou de supprimer des dossiers (répertoires) , des fichiers....
lien : Tutoriel manipulation des fichiers en VBA
Comment utiliser FileSystemObject ?
Auteurs : bbil ,
Toute utilisation de FileSystemObject commence par la création de l'objet "racine" FileSystemObject:
Création Objet FSO en VBS
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")
Ensuite toute utilisation de FileSystemObject passera par cet objet.
- 13 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Disques
Comment lister l'ensemble des unités de disques d'un PC ?
Auteurs : SilkyRoad , bbil ,
Lister les disques et l'espace disponible :
VBS
Set FSO = CreateObject("Scripting.FileSystemObject")For Each Drv In FSO.Drives If Drv.IsReady Then MsgBox "le support " & Drv.DriveLetter & " --> " & _ Drv.drivetype & " --> " & Drv.FreeSpace & " octets" End If Next
Comment tester l'existence d'un disque ?
Auteurs : Tofalu , bbil ,
La méthode DriveExists exposée par la classe FileSystemObject teste l'existence d'un disque en fonction de son nom.
VBS
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox oFSO.DriveExists("G")
Comment obtenir des informations sur les unités de disques ?
Auteurs : Tofalu , bbil ,
Les propriétés des disques• DriveLetter : Lettre utilisé par le système d'exploitation pour accéder au disque. Il s'agit de la clé de la
collection Drives. Exemple : D• DriveType : Type du disque (CDRom,Fixed,RamDisk,Remote,Removable,UnknownType)
DriveType• 0 : Inconnu• 1 : Amovible• 2 : Fixe• 3 : Réseau• 4 : CD-ROM• 5 : Disque virtuel
• FileSystem : Type du système de fichier du disque. Comme FAT, FAT32, NTFS et autre .• AvailableSpace, FreeSpace : Espace disponible et espace libre en octets• IsReady : Booléen indiquant si l'unité de disque est disponible. Dans le cas d'un lecteur de CD-ROM, elle
permettra de savoir si un disque est présent ou pas.• Path : Chemin de l'unité de disque. Exemple : "D :"• RootFolder : Retourne un objet Folder correspondant au dossier racine du disque. C'est cet objet qui donne
accès à l'ensemble des autres dossiers présent sur le disque. Le path de ce dossier est alors : Drive.Path + \ ,Exemple D:\"
• SerialNumber : Numéro de série du disque. Exemple : 1154367849
- 14 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
• ShareName : Retourne une chaîne de caractères correspondant au nom de partage du disque. Cette chaîne seranulle si le disque n'est pas partagé. Exemple : Partage_Donnees
• VolumeName : Retourne le nom du volume (et non de l'unité) dans une chaîne de caractères. Exemple :Donnees
• TotalSize : Taille du disque en octets
Un exemple d'utilisation :
VBS
Dim oFSO,oDrvSet oFSO = CreateObject("Scripting.FileSystemObject")If oFSO.DriveExists("C") Then Set oDrv = oFso.GetDrive("C") MsgBox "DriveLetter : " & oDrv.DriveLetter & vbCrlf & _ "DriveType : " & oDrv.DriveType & vbCrlf & _ "FileSystem : " & oDrv.FileSystem & vbCrlf & _ "AvailableSpace : " & oDrv.AvailableSpace & vbCrlf & _ "FreeSpace : " & oDrv.FreeSpace & vbCrlf & _ "IsReady : " & oDrv.IsReady & vbCrlf & _ "Path : " & oDrv.Path & vbCrlf & _ "RootFolder : " & oDrv.RootFolder & vbCrlf & _ "SerialNumber : " & oDrv.SerialNumber & vbCrlf & _ "ShareName : " & oDrv.ShareName & vbCrlf & _ "VolumeName : " & oDrv.VolumeName & vbCrlf & _ "TotalSize : " & oDrv.TotalSize End if
Comment retrouver le nom d'un disque à partir d'un chemin ?
Auteurs : bbil ,
la méthode GetDriveName,renvoie une chaîne contenant le nom correspondant au lecteur spécifié dans un chemind'accèsRemarque: la méthode n'effectue aucune vérification (existence...) elle effectue juste une "extraction" de chaîne decaractère.exemple d'utilisation :
VBS
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox oFSO.GetDriveName(C:\Program Files\Fichiers communs")
renvoi C:
- 15 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Dossiers/Répertoires
Comment tester l'existence d'un répertoire ?
Auteurs : bbil ,
Avec la méthode FolderExists
Dossier Existe
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox "C:\Program Files\Fichiers communs >> " & oFSO.FolderExists("C:\Program Files\Fichiers communs")MsgBox "C:\Program Files\Fichiers communs\RepBidon >> " & oFSO.FolderExists("C:\Program Files\Fichiers communs\RepBidon")
Comment lister les sous répertoires d'un dossier ?
Auteurs : bbil ,
Une boucle For Each permet d'énumérer l'ensemble des sous-dossiers :
listes des sous-dossiers
Dim stRep 'Nom du répertoire à parcourirDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "C:\Program Files\Fichiers communs"If oFSO.FolderExists(stRep) Then For each oFld in oFSO.GetFolder(stRep).SubFolders Wscript.Echo oFld.Name NextEnd If
Comment obtenir des informations sur un dossier ?
Auteurs : Tofalu , bbil ,
Les propriétés de l'objet Folder• Attributes : attributs du dossier.
Attributs du dossier• 0 : Normal. Aucun attribut n'est défini.• 1 : ReadOnly : Dossier en lecture seule (attribut en lecture/ecriture)• 2 : Hidden : Dossier caché (attribut en lecture/ecriture)• 4 : System : Dossier système (attribut en lecture/ecriture)• 32 : Archive : Dossier archivé (attribut en lecture/ecriture)• 2048 : Compressed : Dossier compress (attribut en lecture seule)
• DateCreated : Date de création du dossier• DateLastAccessed : Date du dernier accès au dossier• DateLastModified : Date de dernière modification• Drive : Lettre désignant l'unité de disque d'où est issu le dossier.• Files : Collection regroupant les fichiers du dossier• IsRootFolder : Booléen qui définit si le dossier est le dossier racine de son unité de disque.• Name : Nom du dossier. Exemple : Windows (propriété en lecture/ecriture)
- 16 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
• ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cettepropriété retourne Nothing.
• Path : Chemin complet d'accès au dossier. Exemple : D:\Windows• ShortName : Nom court sur 8 caractères maximum. Exemple ESSAI1~1• ShortPath : Chemin complet d'accès au dossier où chaque composant respecte la norme évoquée pour
ShortName. Exemple D:\ABCDEF1~1\ ESSAI1~1• Size : Taille totale du dossier en octets. Il s'agit de la somme de la taille de tous les fichiers présents dans le
dossier et ses sous-dossiers.• SubFolders : Collection d'objet Folder regroupant les sous-dossiers.• Type : Type du dossier. Dans tous les cas testés, il s'agit de FileFolder.
Dim stRep 'Nom du répertoire à parcourirDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "C:\Program Files\Fichiers communs"If oFSO.FolderExists(stRep) ThenSet oFld = oFSO.GetFolder(stRep) MsgBox "Attributes :" & oFld.Attributes & vbCrlf & _ "DateCreated :" & oFld.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFld.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFld.DateLastModified & vbCrlf & _ "Drive :" & oFld.Drive & vbCrlf & _ "IsRootFolder :" & oFld.IsRootFolder & vbCrlf & _ "Name :" & oFld.Name & vbCrlf & _ "ParentFolder :" & oFld.ParentFolder & vbCrlf & _ "Path :" & oFld.Path & vbCrlf & _ "ShortName :" & oFld.ShortName & vbCrlf & _ "ShortPath :" & oFld.ShortPath & vbCrlf & _ "Size :" & oFld.Size & vbCrlf & _ "SubFolders.Count :" & oFld.SubFolders.count & vbCrlf & _ "Type :" & oFld.Type
End If
Comment créer un répertoire ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour créer un dossier :Depuis le FSO directement
Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject")'Crée le repertoireSet oFld=oFSO.CreateFolder ("D:\Essai")
où en rajoutant un élément à la collection SubFolders
Dim oFSO,oFld Set oFSO = CreateObject("Scripting.FileSystemObject")Set oFld=oFSO.GetFolder ("D:\")
- 17 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
oFld.subFolders.Add("Essai")
Comment créer une arborescence ?
Auteurs : Forum ,
Il est possible d'utiliser une fonction récursive pour créer une arborescence.
Option ExplicitDim ofsoSet ofso = CreateObject("Scripting.FileSystemObject") CreerRep("c:\data\toto\titi\") Sub CreerRep(Chemin) If Not ofso.FolderExists(chemin) Then CreerRep(ofso.GetParentFolderName(chemin)) ofso.CreateFolder(chemin) End IfEnd Sub
Comment copier un répertoire et son contenu ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour copier un dossier :Depuis le FSO directement grâce à la méthode CopyFolder
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.CopyFolder "c:\tmp","c:\tmp2",True ' True : pour copier en "écrasant" destination si existe..
où en utilisant la méthode copy de l'objet Folder
Dim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")set oFld = oFSO.GetFolder("c:\tmp")oFld.Copy "c:\tmp2",True ' True : pour copier en "écrasant" destination si existe..
Comment effacer un répertoire et son contenu ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour effacer un dossier :Depuis le FSO directement grâce à la méthode DeleteFolder
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.DeleteFolder "c:\tmp2",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules.
où en utilisant la méthode delete de l'objet Folder
- 18 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Dim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")set oFld = oFSO.GetFolder("c:\tmp2")oFld.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lectures seules.
les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers enlecture seule.
Comment déplacer un répertoire et son contenu ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour déplacer un dossier :Depuis le FSO directement grâce à la méthode MoveFolder
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.MoveFolder "c:\tmp2","c:\tmp3"
où en utilisant la méthode move de l'objet Folder
Dim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")set oFld = oFSO.GetFolder("c:\tmp2")oFld.Move "C:\tmp3"
Comment compresser un dossier ?
Auteurs : SilkyRoad ,
VBS
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim Source, Destination, MyHex, MyBinary, iDim oShell, oApp, oFolder, oCTF, oFileDim oFileSys
Source = "C:\Temp"Destination = "C:\maSauvegarde.zip"
MyHex = _Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
For i = 0 To UBound(MyHex) MyBinary = MyBinary & Chr(MyHex(i))Next
Set oShell = CreateObject("WScript.Shell")Set oFileSys = CreateObject("Scripting.FileSystemObject")
'Creation du zipSet oCTF = oFileSys.CreateTextFile(Destination, True)oCTF.Write MyBinaryoCTF.CloseSet oCTF = Nothing
- 19 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBS
Set oApp = CreateObject("Shell.Application")
Set oFolder = oApp.NameSpace(Source)If Not oFolder Is Nothing Then _ oApp.NameSpace(Destination).CopyHere oFolder.Items
wScript.Sleep 5000
Set oFile = NothingOn Error Resume Next
- 20 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Fichiers : le FileSystemObject > Accès aux Fichiers
Comment tester l'existence d'un fichier ?
Auteurs : bbil ,
La méthode FileExists exposée par la classe FileSystemObject teste l'existence d'un fichier en fonction de son nom.
VBS
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")MsgBox oFSO.FileExists("c:\tmp\Fichier1.txt")
Comment lister les fichiers d'un dossier ?
Auteurs : bbil ,
Une boucle For Each permet d'énumérer l'ensemble des fichiers :
VBS
Dim stRep 'Nom du répertoire à parcourirDim oFSO,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "C:\Tmp"If oFSO.FolderExists(stRep) Then For each oFl in oFSO.GetFolder(stRep).Files Wscript.Echo oFl.Name NextEnd If
Comment obtenir des informations sur fichier ?
Auteurs : Tofalu , bbil ,
Les propriétés de l'objet File• Attributes : attributs du dossier.
Attributs du fichier• 0 : Normal. Aucun attribut n'est défini.• 1 : ReadOnly : fichier en lecture seule (attribut en lecture/ecriture)• 2 : Hidden : fichier caché (attribut en lecture/ecriture)• 4 : System : fichier système (attribut en lecture/ecriture)• 32 : Archive : fichier archivé (attribut en lecture/ecriture)• 1024 : Lien ou raccourci. L'attribut est lecture seule. (attribut en lecture seule)• 2048 : Compressed : fichier compressé (attribut en lecture seule)
• DateCreated : Date de création du fichier• DateLastAccessed : Date du dernier accès au fichier• DateLastModified : Date de dernière modification• Drive : Lettre désignant l'unité de disque d'où est issu le dossier.• Name : Nom du fichier. Exemple : Fichier1.txt (propriété en lecture/ecriture)• ParentFolder : Objet Folder correspondant au dossier parent. Si le dossier est un dossier RootFolder cette
propriété retourne Nothing.• Path : Chemin complet d'accès au fichier. Exemple : c:\tmp\fichier1.txt• ShortName : Nom court sur 8 caractères maximum. Exemple : MONFIC~1.TXT
- 21 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
• ShortPath : Chemin complet d'accès au fichier où chaque composant respecte la norme évoquée pourShortName. Exemple D:\ABCDEF1~1\MONFIC~1.TXT
• Size : Taille du fichier en octets.• Type : Type du fichier. Exemple : Document Texte. C'est ce type qui est affiché dans l'explorateur Windows.
VBS
Dim stFichier 'Nom du Fichier a tester Dim oFSO,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")stFichier = "c:\tmp\Nouveau Document texte.txt"If oFSO.FileExists(stFichier) ThenSet oFl = oFSO.GetFile(stFichier) MsgBox "Attributes :" & oFl.Attributes & vbCrlf & _ "DateCreated :" & oFl.DateCreated & vbCrlf & _ "DateLastAccessed :" & oFl.DateLastAccessed & vbCrlf & _ "DateLastModified :" & oFl.DateLastModified & vbCrlf & _ "Drive :" & oFl.Drive & vbCrlf & _ "Name :" & oFl.Name & vbCrlf & _ "ParentFolder :" & oFl.ParentFolder & vbCrlf & _ "Path :" & oFl.Path & vbCrlf & _ "ShortName :" & oFl.ShortName & vbCrlf & _ "ShortPath :" & oFl.ShortPath & vbCrlf & _ "Size :" & oFl.Size & vbCrlf & _ "Type :" & oFl.Type
End If
Comment obtenir les informations étendues d'un fichier ?
Auteurs : Forum ,
la bibliothèque "Microsoft Shell Controls and Automation" permet, grâce à la fonction GetDetailsOf , d'accéder auxpropriétés étendues :
stRep="d:\MesPhotos" stFichier ="photo.jpg" Set oShell = CreateObject("Shell.Application")Set oFolder = oShell.Namespace(stRep)Set oFichier = oFolder.Items.Item(stFichier)'Affiche les propriétés étendues du fichierFor i = 0 to 34 Wscript.Echo "[" & i & "] " & oFolder.GetDetailsOf(oFolder.Items, i ) & " : " & oFolder.GetDetailsOf(oFichier, i)Next
le résultat :D:\>PropEtendues.vbsMicrosoft (R) Windows Script Host Version 5.7Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.[0] Nom : photo.jpg[1] Taille : 900 Ko[2] Type : Image JPEG[3] Date de modification : 07/09/2009 18:26[4] Date de création : 31/10/2010 14:01[5] Date d'accès : 01/11/2010 13:32[6] Attributs : A[7] État : Connecté[8] Propriétaire : DELLGX280\philippe
- 22 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
[9] Auteur :[10] Titre :[11] Objet :[12] Catégorie :[13] Pages : 1[14] Commentaires :[15] Copyright :[16] Artiste :[17] Titre de l'album :[18] Année :[19] Numéro de piste :[20] Genre :[21] Durée :[22] Débit :[23] Protégée :[24] Modèle d'appareil photo : 5800 Xpres[25] Date du cliché : 07/09/2009 19:26[26] Dimensions : 2048 x 1536[27] : 2048 pixels[28] : 1536 pixels[29] Nom de l'épisode :[30] Description du programme :[31] :[32] Taille de l'échantillon audio :[33] Taux d'échantillonnage audio :[34] Chaînes :
Le nombre de propriétés est variable suivant l'OS. Ainsi si XP affiche 35 propriétés, on peut en trouver jusqu'à 266sous Vista et 284 sous Windows 7.
lien : Informations "Avancée" d'un fichier
Comment copier un fichier ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour copier un fichier :Depuis le FSO directement grâce à la méthode CopyFile
VBS
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.CopyFile "c:\tmp\Fichier1.txt","c:\tmp\Fichier2.txt",True ' True : pour copier en "écrasant" destination si existe..
où en utilisant la méthode copy de l'objet file
Dim oFS,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")
- 23 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
oFl.Copy "c:\tmp\fichier3.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers en lectures seules.
Comment effacer un fichier ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour effacer un fichier :Depuis le FSO directement grâce à la méthode DeleteFile
VBS
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.DeleteFile "c:\tmp\fichier1.txt",True ' Le paramétre "Force" à true permet d'effacer les fichiers en lectures seules.
où en utilisant la méthode delete de l'objet File
Dim oFS,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")oFl.Delete False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers et répertoires en lectures seules.
les deux méthodes prennent en dernier paramètre le paramètre "Force" qui à "True" permet d'effacer les fichiers enlecture seule.
Comment déplacer,renommer un fichier ?
Auteurs : Tofalu , bbil ,
Il est possible d'utiliser deux techniques différentes pour déplacer un fichier :Depuis le FSO directement grâce à la méthode MoveFile
Dim oFSOSet oFSO = CreateObject("Scripting.FileSystemObject")oFSO.MoveFile "c:\tmp\Fichier1.txt","c:\tmp\fichier2.txt"
où en utilisant la méthode move de l'objet file
VBS
Dim oFS,oFlSet oFSO = CreateObject("Scripting.FileSystemObject")Set oFl = oFSO.GetFile("c:\tmp\Fichier1.txt")
- 24 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBSoFl.Move "D:\tmp\fichier2.txt" ' Déplacement vers autre unité de disque tout en renommant le fichier...
Comment lire le contenu d'un fichier texte ?
Auteurs : bbil ,
Lecture ligne à ligne d'un fichier texte :
VBS
Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) while Not f.AtEndOfStream wscript.echo f.ReadLine Wend f.Close
Lecture de la totalité d'un fichier texte :
VBS
Const ForReading = 1, ForWriting = 2 Dim oFso, f Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading) Wscript.echo f.ReadAll f.Close
Comment ouvrir un fichier texte en Unicode ?
Auteurs : bbil ,
en utilisant le 4° paramétre d'openTextFileOpenTextFile(filename[, iomode[, create[, format]]])avec format :TristateFalse (0) Ouvre le fichier en ASCII.TristateTrue (-1) Ouvre le fichier en Unicode.TristateUseDefault (-2) Ouvre le fichier en utilisant le paramètre système par défaut.
vbConst TristateTrue = -1
- 25 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
vbset f = fso.opentextfile("c:\MonFichier.txt", 1, true,TristateTrue)
Comment écrire dans un fichier texte ?
Auteurs : bbil ,
VBS
Const ForWriting = 2 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("c:\temp\ecr.txt", ForWriting,true) f.write("Salut")
Comment obtenir le nombre de lignes d'un fichier texte ?
Auteurs : ThierryAIM ,
A l'ai de la propriété Line de l'objet fichier :
VBS
Const ForReading = 1, ForWriting = 2 Dim oFso, fDim ts, nl Set oFso = CreateObject("Scripting.FileSystemObject") Set f = oFso.OpenTextFile("c:\test1.txt", ForReading) ts = f.ReadAll '-- Lit la totalité du fichier Wscript.echo f.Line '-- Récupère le nombre de lignes
Comment agir sur tous les fichiers d'un répertoire ?
Auteurs : bbil ,
Grâce à une fonction récursive.Utilisez le principe présenté dans le script suivant en modifiant la procédure ListeFichier.
vbDim oFSO,oFldSet oFSO = CreateObject("Scripting.FileSystemObject")stRep = "d:\users"LectRep stRep '' Fonction récursive de parcours de répertoire'Sub LectRep (stR ) For each oFld in oFSO.GetFolder(stR).SubFolders Wscript.Echo "--------------- " & oFld.PAth & "-----------------" ListeFichier (oFld.PATH) LectRep oFld.PATH Nextend sub'' Listing des fichiers du répertoire
- 26 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
vb'Sub ListeFichier (stR) For each oFl in oFSO.GetFolder(stR).Files Wscript.Echo oFl.Name NextEnd sub
- 27 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Applications Externes
Comment piloter Excel pour créer un classeur.xls ?
Auteurs : bbil ,
Il faut utiliser un objet Excel.Application
VBS
Dim xlapp, classeur, feuille
Set xlapp = CreateObject("Excel.Application")xlapp.Visible = TrueSet classeur = xlapp.Workbooks.addSet feuille = xlapp.ActiveSheetfeuille.Range("A1") = "Rajout du texte en cellule A1"Classeur.Saveas "c:\tmp\MonClasseur"classeur.Close True 'quitte en sauvant
xlApp.quitSet classeur = NothingSet xlapp = Nothing
Comment piloter Internet Explorer pour envoyer des informations à un site internet ?
Auteurs : bbil ,
Avec l'objet InternetExplorer.Application
Exemple pour la connexion au forum développez.com
VBS
Dim IESet IE = Wscript.CreateObject("InternetExplorer.Application")IE.Visible = 1 IE.navigate "http://www.developpez.net/forums/login.php"Do While (IE.Busy) WScript.Sleep 10LoopSet Helem = IE.document.getElementById("vb_login_username")Helem.Value = "NomUtilisateur"Set Helem = IE.document.getElementById("vb_login_password")Helem.Value = "MotDePasse"Set Helem = IE.document.Forms(0)Helem.Submit
Comment verrouiller la session Windows courante ?
Auteurs : bbil ,
Pour retourner à l'écran d'accueil de Windows XP (où Vista) de la même façon que lors de l'action simultanée surles touches Windows et L, on peut faire un appel à la fonction LockWorkStation de User32.dll grâce à "l'utilitaire"rundll32.exe, ce qui donne:
VBSSet WshShell = WScript.CreateObject("WScript.Shell")
- 28 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBSWshShell.Run "rundll32.exe user32.dll,LockWorkStation"
Comment lister les actions possibles sur un fichier ?
Auteurs : l_autodidacte ,
En utilisant la propriété Name de la classe FolderItemVerbs découlant de Shell.Application' Il est utile de connaître ces actions si on veut manipuler un fichier par exemple : "Ouvrir" (Open par défaut),"Copier,coller, Imprimer, supprimer ... et ce en utilisant la méthode InvokVerb ou InvokVerbEx
vbSet oShell = CreateObject("Shell.Application")Set oFolder = oShell.NameSpace("c:\tmp")Set oFolderItem = oFolder.ParseName("microsoft.jpg")
For Each oVerb In oFolderItem.Verbs If oVerb<>"" Then WScript.Echo oVerbNext
lien : http://vb.developpez.com/faqvbs/?page=II.3#ImprimePdf
Comment imprimer tous les fichiers .pdf d'un dossier ?
Auteurs : l_autodidacte ,
En utilisant un appel à Shell.Application :
vbSet objShell = CreateObject("Shell.Application") 'Référence à Shell32.dll Set objFolder = objShell.Namespace("c:\temp\") Set colItems = objFolder.Items For Each objItem in colItems If Ucase(Right(ObjItem.Name,4))=".PDF" then objItem.InvokeVerbEx("Print") End If Next
Bien entendu cela impose la présence d'une application (Acrobat Reader...) gérant les .pdf.
- 29 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Les Fichiers de Script Windows
Les fichiers Windows Script File (.wsf)
Auteurs : bbil , ThierryAIM ,
Les fichiers de script Windows (Windows Script File), utilisant l'extension réservée .wsf, sont des fichiers textes auformat XML, permettant une grande souplesse dans la gestion des scripts VBS.
Outre qu'ils permettent l'utilisation de plusieurs langages de script dans un même projet, voyons comment les utiliseren VBScript.
Exemple 1 : Séparer un module de fonctions réutilisables, d'un projet :
Créer un module .vbs, contenant les fonctions génériques :
VBS
' Fichier MesFct.vbs'function Fct1( st ) Fct1 = st & 1End function
Function Fct2 (st) Fct2 = st & 2End function
Puis un fichier MyScript.wsf ... utilisant ces fonctions :
VBS
<job id="Main"> <script language="VBScript" src="MesFct.VBS"/> <script language="VBScript"> MsgBox "Appel fonction 1 : " & Fct1 ("A") Msgbox "Appel fonction 2 : " & fCt2 ("B") </script></job
lien : La balise "job"
La balise "script"
Auteurs : ThierryAIM ,
Balise réservée du XML pour fichier .wsf, elle permet d'identifier le langage de script utilisé :
WSF
<script language="VBScript"> WScript.Echo "Il s'agit de VBScript"
- 30 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
WSF</script>
La balise "job"
Auteurs : ThierryAIM ,
Balise réservée du langage XML des fichiers .wsf, elle permet d'identifier une tache (job) dans un fichier .wsf :
WSF
<job id="MaTacheVBS"> <script language="VBScript"> WScript.Echo "Il s'agit de VBScript" </script></job>
La balise "package"
Auteurs : ThierryAIM ,
Balise réservée du XML pour fichier .wsf, elle permet d'identifier un groupe de tâche (job) dans un script multi-tâches :Cette balise est facultative lorsque le script ne comporte qu'une seule tâche
WSF
<package> <job id="MaTache_1_VBS"> <script language="VBScript"> WScript.Echo "VBScript: job 1" </script> </job> <job id="MaTache_2_VBS"> <script language="VBScript"> WScript.Echo "VBScript: job 2" </script> </job></package>
NOTA : La tâche 1 est exécutée par défaut.Pour exécuter la tâche 2 en ligne de commande :cscript myScript.wsf //job:MaTache_2_VBSPour exécuter les 2 tâches en ligne de commande :cscript myScript.wsf //job:MaTache_1_VBS //job:MaTache_2_VBS
- 31 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > XML
Comment créer un nouveau document XML ?
Auteurs : ThierryAIM , bbil ,
Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :
VBS
'-- Créer un document XMLSet xmlDoc = CreateObject("Microsoft.XMLDOM") ' Créer et ajouter la racine dans le document' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XMLSet oRacine = xmlDoc.createElement("Racine") ' Ajouter la racine dans le documentxmlDoc.appendChild oRacine
' Ajouter un élémentSet oElement = xmlDoc.selectSingleNode("Racine") ' positionnement sur la racineSet oElement = xmlDoc.createElement("element") ' création d'un fils membrexmlDoc.documentElement.appendChild oElement ' crée le fils de la racine
' Ajouter des champs balisesSet oNom = xmlDoc.createElement("nom")oNom.Text = "LENOM"oElement.appendChild oNomSet oNom = Nothing
Set oPrenom = xmlDoc.createElement("prenom")oPrenom.Text = "Prénom"oElement.appendChild oPrenomSet oPrenom = NothingSet oElement = Nothing
'-- Indenter le fichier crééset rdr = CreateObject("MSXML2.SAXXMLReader")set wrt = CreateObject("MSXML2.MXXMLWriter")Set oStream = CreateObject("ADODB.STREAM")oStream.Open 'Ouverture objet stream..oStream.Charset = "ISO-8859-1"
wrt.indent = Truewrt.encoding = "ISO-8859-1"wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet StreamSet rdr.contentHandler = wrtSet rdr.errorHandler = wrtrdr.Parse xmlDocwrt.flush
' Sauver le fichier crééoStream.SaveToFile "test1.xml", 2
' Détruire les objetsSet rdr = NothingSet wrt = NothingSet xmlDoc = Nothing
Résultat :
XML
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
- 32 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
XML<Racine Create="03/03/2007"> <element ID="1"> <nom>LENOM</nom> <prenom>Prénom</prenom> </element></Racine>
Comment ouvrir un document XML existant ?
Auteurs : bbil ,
Le code ci-dessous utilise la classe Microsoft.XMLDOM, permettant d'accéder aux documents de type XML :
'-- Lire un document XMLSet xmlDoc=CreateObject("Microsoft.XMLDOM")
'La desactivation du mode asynchrone permet de charger entièrement le document en mémoire avant le traitementxmlDoc.Async="false"
'Charger le document en mémoirexmlDoc.Load("c:\test1.xml")
For each x in xmlDoc.documentElement.childNodes Msgbox x.nodename & " : " & x.textNextSet xmlDoc = Nothing
Comment ajouter un attribut à une balise XML ?
Auteurs : Forum , ThierryAIM ,
La méthode SetAttribute de l'objet Element permet de spécifier un attribut pour une balise XML.Un attribut se compose de 2 paramètres :- un identificateur- la valeur de l'attribut
Reprenons l'exemple précédent et ajoutons un attribut Date au noeud racine et un attribut ID pour le noeud element :
'-- Créer un doc XMLSet xmlDoc = CreateObject("Microsoft.XMLDOM")Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")xmlDoc.insertBefore oCreation, xmlDoc.childNodes.Item(0) ' Créer et ajouter la racine dans le document' ATTENTION : il ne peut y avoir qu'un seul noeud racine dans un doc XMLSet oRacine = xmlDoc.createElement("Racine")
' Ajouter un attribut Date de création du documentoRacine.setAttribute "Créé_le", FormatDateTime(Date, vbGeneralDate) ' Ajouter la racine dans le documentxmlDoc.appendChild oRacine
' Ajouter un élémentSet oElement = xmlDoc.selectSingleNode("Racine") ' positionnement sur la racineSet oElement = xmlDoc.createElement("element") ' création d'un fils membre
- 33 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
' Ajouter un attribut ID à l'élément crééoElement.setAttribute "ID", "1"xmlDoc.documentElement.appendChild oElement ' crée le fils de la racine
' Ajouter des champs balisesSet oNom = xmlDoc.createElement("nom")oNom.Text = "LENOM"oElement.appendChild oNomSet oNom = Nothing
Set oPrenom = xmlDoc.createElement("prenom")oPrenom.Text = "Prénom"oElement.appendChild oPrenomSet oPrenom = NothingSet oElement = Nothing
' Sauver le fichier crééxmlDoc.save ("test1.xml")Set xmlDoc = Nothing
Résultat :
XML
<?xml version="1.0" encoding="ISO-8859-1"?><Racine Créé_le="19/02/2007"> <element ID="1"> <nom>LENOM</nom> <prenom>Prénom</prenom> </element></Racine>
lien : Comment créer un nouveau document XML ?
Comment accéder aux valeurs d'un noeud par le nom de balise ?
Auteurs : Forum , ThierryAIM ,
C'est bien gentil de créer un document XML, encore faut-il pouvoir accéder à son contenu et en retirer les informationsqui nous intéressent :
Sur la base de l'exemple précédent, comment récupérer les valeurs de la balise nom en utilisant la méthodegetElementsByTagName :
VBS
'-- Lire un doc XMLSet xmlDoc=CreateObject("Microsoft.XMLDOM")xmlDoc.async="false" ' permet de charger entièrement le document en mémoire avant le traitementxmlDoc.load("test1.xml")
' Lister les valeurs par nom de balise Set oElement = xmlDoc.documentElement If Not oElement Is Nothing Then For Each x In oElement.getElementsByTagName("nom") MsgBox x.Text Next
- 34 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBS End If
lien : Comment ajouter un attribut à une balise XML ?
Comment accéder aux attributs d'une balise ?
Auteurs : bbil ,
La méthode GetAttribute de l'objet Element permet d'accéder aux attributs d'une balise noeud :
VBS
'-- Lire un doc XMLSet xmlDoc = CreateObject("Microsoft.XMLDOM")xmlDoc.async = "false" xmlDoc.load("test1.xml")
' Pour tous les noeuds "element", renvoie l'attribut "ID"' Attention à la casse !For Each oElement In xmlDoc.getElementsByTagName("element") MsgBox oElement.getAttribute("ID")Next
Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ?
Auteurs : ckeromen ,
L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages, ci-dessous un squeletteen VBScript. Remplacer les expressions entre accolades par les valeurs réelles ou des paramètres (ex.: {namespace}) :
vbDim WshShellSet WshShell=CreateObject("WScript.Shell") Dim xmlDocset xmlDoc=CreateObject("Msxml2.DOMDocument.6.0")xmlDoc.async=falsexmlDoc.validateOnParse=true Dim xmlSchemaset xmlSchema=CreateObject("Msxml2.DOMDocument.6.0")xmlSchema.async=falsexmlSchema.validateOnParse=truexmlSchema.load {le chemin d acces au schema} Dim xsdCacheset xsdCache=CreateObject("Msxml2.XMLSchemaCache.6.0")xsdCache.add {namespace}, xmlSchemaSet xmlDoc.schemas = xsdCache xmlDoc.load {le chemin d acces au fichier XML} Set myErr=xmlDoc.parseErrorIf(myErr.errorCode<>0)Then WScript.Echo("errorReason="+myErr.reason)else WScript.Echo("ok")End If
- 35 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Base de donnée
Comment créer une base mdb, en DAO ?
Auteurs : bbil ,
en utilisant la bilbliothéque Microsoft DAO 3.6 Object Library :
vbConst dbInteger =3Const dbText = 10Set oDAO36 = CreateObject("DAO.DBEngine.36")Set oBase = oDAO36.CreateDatabase("Mabase.MDB", ";LANGID=0x0409;CP=1252;COUNTRY=0", 64) Set oTable = oBase.CreateTableDef("Table1") oTable.Fields.Append oTable.CreateField("Champ1", dbInteger) oTable.Fields.Append oTable.CreateField("Champ2", dbText, 50) oBase.TableDefs.Append oTable oBase.Close
lien : Définition et manipulation de données avec DAO
- 36 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Manipulation des chaînes de caractères
Comment extraire une partie d'une chaîne ?
Auteurs : bbil ,
On retrouve les fonctions habituelles d'extraction d'une partie de chaîne de Visual basic :
• Left(chaîne, NombreDeCaracteres) : Pour extraire la partie gauche de la chaîne donnée en paramètre• Right(chaîne, NombreDeCaracteres) : Pour extraire la partie droite de la chaîne donnée en paramètre• Mid(chaîne, posdepart, NombreDeCaracteres) : Pour extraire le nombre de caractères spécifiés, à partir d'un
caractère donné (posdepart)
VBSDim stst="Bienvenue sur DVP"Wscript.Echo Left(st,9)Wscript.Echo Mid(st,11,3)Wscript.Echo Right(st,3)
RésultatBienvenuesurDVP
Nota: Pour la fonction Mid si le troisième paramètre (NombreDeCaracteres) est omis ou supérieur au nombre decaractères disponibles dans la chaîne après la position de départ, le caractère en position de départ et tous les caractèresqui lui succèdent sont retournés.ce qui donne :
VBSDim stst="Bienvenue sur DVP"Wscript.Echo Mid(st,11)Wscript.Echo Mid(st,11,255)
Résultatsur DVPsur DVP
Comment connaitre la longueur d'un chaîne ?
Auteurs : bbil ,
En utilisant la fonction Len() :
VBSDim stst="Bienvenue sur DVP"Wscript.Echo Len(st)
Résultat
- 37 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Résultat17
Comment concaténer deux chaînes ?
Auteurs : bbil ,
L'opérateur usuel de concaténation est : &
VBSDim st1Dim st2'' Concaténation de la "valeur" de 2 variable'st1 = "Bienvenue "st2 = "sur dvp"Wscript.Echo st1 & st2' Une chaîne et une variable :Wscript.Echo st1 & " a vous"
ce qui donne :
Bienvenue sur dvpBienvenue a vous
Il est aussi possible (mais déconseillé) d'utiliser l'opérateur : +Celui-ci se comporte en opérateur de concaténation lorsque les 2 membres de l'opération sont des chaînes
VBS
Wscript.Echo "à voir " + st2'Attention dans l'utilisation de l'opérateur +Wscript.Echo "1" + "2"
Résultatà voir sur dvp12
et en opérateur d'addition lorsque l'un des opérantes est numérique
VBSWscript.Echo "3" + 2Wscript.Echo 1+2
Résultat53
Une mauvaise utilisation de l'opérateur +, peut provoquer une erreur de type :Erreur d'exécution Microsoft VBScript: Type incompatible: '[string: "a"]'
VBSWscript.Echo "a" + 1
- 38 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
la chaîne "a" ne pouvant pas être additionnée à la valeur numérique 1.
Comment "éclater" une chaîne dans un tableau ?
Auteurs : bbil ,
la fonction Split permet "d'éclater" le contenu d'une chaîne dans un tableau, en fonction d'un caractère séparateur
VBSDim st,i,tbst="Antoine,Pierre,Jacques,Alain"tb = split(st,",")For i = lbound(tb) to ubound(tb) Wscript.echo tb(i)next
RésultatAntoinePierreJacquesAlain
Nota: les fonctions Lbound et Ubound permettent de renvoyer les limites basse et haute des index d'un tableau. Lafonction Split renvoyant un tableau dont l'index le plus bas est toujours 0, on aurai pu écrire :
For i = 0 to ubound(tb)
Comment transformer un tableau en une chaîne?
Auteurs : bbil ,
Il existe un pendant à la fonction Split :
la fonction Join qui permet de regrouper tous les éléments d'un tableau de chaîne en une chaîne, tout en précisant unséparateur :
VBSDim st,tb(3)Tb(0)="Antoine"tb(1)="Pierre"tb(2)="Jacques"tb(3)="Alain"
st = join(tb,",") Wscript.echo st
RésultatAntoine,Pierre,Jacques,Alain
- 39 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Nota: Si le caractère de séparation est omis, un espace est utilisé.
Comment rechercher une chaîne de caractères dans une autre ?
Auteurs : Romain Puyfoulhoux ,
Instr(p,ch1,ch2) recherche la chaîne ch2 dans ch1 à partir de la position p. Si ch2 est trouvée, la valeur renvoyée est laposition de son premier caractère dans ch1, sinon la fonction renvoie 0.
vb
pos = InStr(4, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 24pos = InStr(27, "Nous sommes au mois de Juillet.", "Juillet") 'renvoie 0
Comment utiliser les expressions régulières ?
Auteurs : Romain Puyfoulhoux ,
La librairie Microsoft VBScript Regular Expressions permet d'utiliser des expressions régulières dans Visual Basic. Ilfaut l'ajouter dans les références du projet.
Le principe consiste à créer un objet RegExp, à le paramétrer en modifiant ses propriétés, puis à lancer la rechercheen appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitezfaire une recherche. La méthode Execute renvoie les occurrences dans une collection. Si vous avez donné la valeur Trueà la propriété Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la première.
Voici comment vérifier la validité d'une adresse email. Ce code a été écrit avec la version 5.5 de la librairie.
vbsPublic Function EmailValide(ByVal email ) Dim regEx , occurrences Set regEx = New RegExp regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$" regEx.IgnoreCase = True 'Ne pas distinguer les minuscules des majuscules regEx.Global = False 'Renvoyer seulement la première occurrence Set occurrences = regEx.Execute(email) EmailValide = (occurrences.Count = 1) End Function
Comment tester une chaîne de caractères avec une expression régulière ?
Auteurs : Baptiste Wicht ,
Il faut pour cela utiliser l'objet RegExp qui va permettre de valider une chaîne de caractères en fonction d'un pattern :
vbsSet RegularExpressionObject = New RegExp
Ensuite, il faut le paramétrer en fonction de la recherche :
With RegularExpressionObject .Pattern = Pattern
- 40 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
.IgnoreCase = BooleanEnd With
La pattern est l'expression régulière et IgnoreCase permet d'indiquer s'il faut prendre en compte ou non la casse.Ensuite, une fois l'objet paramétré, il suffit d'utiliser la méthode Test avec la chaîne à tester en paramètre :
RegularExpressionObject.Test(aTester)
Cette méthode va nous renvoyer True ou False en fonction du résultat.
Voici par exemple, la méthode pour valider une adresse IP :
vbsSet RegularExpressionObject = New RegExp With RegularExpressionObject .Pattern = "^((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)$" .IgnoreCase = FalseEnd With MsgBox RegularExpressionObject.Test("172.16.18.21")MsgBox RegularExpressionObject.Test("300.22.194.37")
Ce qui nous retourne true pour la première chaîne et False pour la seconde.
III-B. Les expressions régulières
Comment interpréter une chaîne string ?
Auteurs : Sadneth , shwin ,
En utilisant la méthode Eval :
vbs
Dim toto toto = "SUPER * 10" MsgBox Eval(Replace(toto, "SUPER", 500))
- 41 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Manipulation des dates
Comment récupérer la date et l'heure courante ?
Auteurs : Baptiste Wicht ,
Pour récupérer la date et l'heure courante sous forme de chaîne , il suffit d'utiliser la variable prédéfinie Now. Voicice que vaut la variable Now à l'heure ou j'écrit ces lignes :
15.11.2007 09:23:23
Cette variable est donc très pratique pour l'affichage. Mais si on désire faire des calculs sur des parties de l'heurecourante seulement, par exemple, si on a besoin de récupérer les secondes, ce n'est pas très pratique. On pourrait bienévidemment parser la chaîne pour récupérer ce dont on a besoin, mais on a pas besoin de se donner ce mal, car VBSpossède déjà les fonctions nécessaires :
• Year : Retourne l'année de la date• Month :Retourne le mois de la date• Day : Retourne le jour de la date• Hour : Retourne l'heure de la date• Minute : Retourne les minutes de la date• Second : Retourne les secondes la date
Il suffit de passer Now en paramètre de ces fonctions pour récupérer les éléments voulus.
VBSWScript.Echo Day(Now)& "."& Month(Now)& "."& Day(Now)& "."& Year(Now)& " "& Hour(Now)& ":"& Minute(Now)& ":"& Second(Now)
Comment récupérer le nom du jour de la semaine dans une variable ?
Auteurs : bbil ,
Grâce à une combinaison de la fonction WeekDay qui, à partir d'une date, renvoi le numéro (1 à 7 ) du jour de lasemaine... et la fonction WeekDayName qui, à partir de ce numéro, renvoi le nom du jour :
VBS
Dim d 'date à traiter Dim stJs ' chaine jour de la semaine.. d = now ' date actuelle stJS = WeekDayName(WeekDay(d)) Wscript.Echo " Nous sommes un : " & stJs
Obtenir mois sur deux caractères ?
Auteurs : omen999 ,
L'emploi de deux fonctions simples permet d'extraire le mois d'une date tout en le formatant sur deux caractéres.
vbdDate = CDate("1/2/10")MsgBox Right("0" & Month(dDate),2)
- 42 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > VB Script > Manipuler la base de registre
Comment manipuler la base de registre ?
Auteurs : bbil ,
L'objet WshShell possède trois méthodes permettant de manipuler la base de registre :1 RegWrite : pour écrire dans la base de registre2 RegRead : pour lire une entrée de la base de registre3 RegDelete : pour effacer une clef ou sa valeur de la base de registre
Ces trois méthodes utilisent comme premier paramètre le nom de la clé concernée. Pour, construire ce nom, desabréviations peuvent être utilisées :
Nom de clé racine AbréviationHKEY_CURRENT_USER HKCUHKEY_LOCAL_MACHINEHKLMHKEY_CLASSES_ROOT HKCRHKEY_USERS HKEY_USERSHKEY_CURRENT_CONFIGHKEY_CURRENT_CONFIG
Pour plus d'informations sur la base de registre, et quelques-unes des utilisations possible, voir :
la faq Windows XP : http://windows.developpez.com/faq/xp/index.php?rechercher=registre
Comment écrire dans la base de registre ?
Auteurs : bbil ,
Pour écrire dans la base de registre, on utilise la méthode RegWrite de l'objet WshShellla documentation Microsoft nous décrit la fonction ainsi :object.RegWrite(strName, anyValue [,strType])ArgumentsobjectObjet WshShell.strName Valeur de chaîne indiquant le nom de la clé, le nom de la valeur ou la valeur que vous voulez créer, ajouter oumodifier. anyValue Nom de la nouvelle clé que vous voulez créer, nom de la valeur que vous voulez ajouter à une cléexistante ou nouvelle valeur que vous voulez assigner à un nom de valeur existant. strType Facultatif. Valeur de chaîneindiquant le type de données de la valeurLe paramètre facultatif strType permet d'indiquer le type données :
Nom de clé racine strTypeChaîne REG_SZChaîne REG_EXPAND_SZNombre entier REG_DWORDNombre entier REG_BINARY
vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegWrite "HKCU\Software\dvp-faqvbs\montest",now
- 43 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
La fonction now renvoie ici la date et l'heure courante sous la forme d'une chaîne de caractères.
Comment lire la base de registre ?
Auteurs : bbil ,
La Méthode RegRead permet de lire la base de registre. Elle ne prend qu'un argument : le nom de la clé ( qui peucomporter des abréviations ..)
vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")msgbox WshShell.RegRead ("HKCU\Software\dvp-faqvbs\montest")
Comment supprimer une "valeur" où une clé de la base de registre ?
Auteurs : bbil ,
La méthode RegDelete permet d'effacer une entrée de la base de registre. Elle ne prend qu'un argument : le nom dela clé ( qui peu comporter des abréviations ..)
vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\montest")
Cette même méthode permet aussi d'effacer une clé (en terminant le nom de la clé par un \):
vbDim WshShellSet WshShell = WScript.CreateObject("WScript.Shell")WshShell.RegDelete ("HKCU\Software\dvp-faqvbs\")
Comment associer une extension à un programme ?
Auteurs : Jean-Marc Rabilloud , Khorne ,
Le principe repose sur la création de plusieurs clés dans la base de registre. Une des méthodes est l'utilisation duWindows Script Host Object Model.
vb
Dim MaCle Set MaCle = CreateObject("WScript.Shell")'nom de votre type de fichierMaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\", "Test Ext", "REG_SZ"'commande a exécuter pour ouvrir les fichiers de ce typeMaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\shell\open\command\", "C:\jmarc\FAQ\TestExt.exe %1", "REG_SZ"'icone à utiliser pour représenter les fichiers de ce type, ici la troisième icone contenue dans TestExt.exe'(la première icone a l'index 0)MaCle.RegWrite "HKEY_CLASSES_ROOT\Test Ext\DefaultIcon\", "C:\jmarc\FAQ\TestExt.exe,2", "REG_SZ"
'extension correspondant à ce type de fichier
- 44 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
vbMaCle.RegWrite "HKEY_CLASSES_ROOT\.jmr\", "Test Ext", "REG_SZ"
Suite à l'application de ce script, tout fichier ayant une extension ".jmr" sera ouvert avec le programme TestExt.exe.
Comment désactiver le gestionnaire des tâches ou la séquence de touches Ctrl-Alt-Suppr ?
Auteurs : Khorne ,
Pour Windows 2000 et supérieur :Cette astuce permet de désactiver ou d'activer le gestionnaire des tâches à partir du code de votre programme et donc,d'inhiber la séquence de touches Ctrl-Alt-Suppr.Lorsque le gestionnaire est désactivé, le système renvoie un message d'avertissement (A utiliser avec précaution) :
Désactiver :
vb
Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", "1" Set WshShell = Nothing
Activer :
vb
Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr", "" Set WshShell = Nothing
- 45 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WMI : Windows Management Instrumentation
Définition
Auteurs : ThierryAIM ,
WMI (l'abréviation de Windows Management Instrumentation) est l'adaptation par Microsoft de la technologie demanagement des ressources WBEM (Web-Based Enterprise Management WBEM).Les possibilités de WMI sont immenses. Intégré depuis Windows 2000, WMI permet d'accéder rapidement etsimplement à toutes les ressources du système, telles que :
• Dispositifs de stockage de masses (disques durs, ...)• Carte mère, mémoire, ...• Fichiers système• Paramètres du système d'exploitation• Processus• Services Windows• Base de registre• etc ...
Vous trouverez une excellente introduction à WMI par Laurent Dardenne au lien ci-dessous.
Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript.
lien : Windows Management Instrumentation ( WMI ), première partie par Laurent Dardenne
lien : Microsoft MSDN: A propos de WMI
- 46 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WMI : Windows Management Instrumentation > Processus : classe Win32_Process
Comment lister les processus actifs ?
Auteurs : ThierryAIM ,
En utilisant la classe Win32_process ;
VBS
Set objWMI = GetObject("winmgmts:root\cimv2") sQuery = "Select * from Win32_process" For Each oproc In objWMI.execquery(sQuery) Wscript.echo oproc.Name & " = " & oproc.ExecutablePath Next Set objWMI = Nothing
lien : Microsoft Win32 Process WMI class
Comment "tuer" un processus en mémoire ?
Auteurs : ThierryAIM , cedric600 ,
Un script WMI utilisant la classe Win32_process pour obtenir la liste des processus actifs, puis la méthode Terminatepour fermer le processus sélectionné :
VBS
strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = 'Notepad.exe'") For Each objProcess in colProcessList objProcess.Terminate()Next
- 47 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WMI : Windows Management Instrumentation > Services : classe Win32_Service
Comment lister les services actifs ?
Auteurs : cedric600 ,
En utilisant la classe Win32_Service :
VBS
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service",,48) For Each objItem in colItems Wscript.Echo "Service : " & objItem.Name & " : " & objItem.State Next Set colItems = Nothing Set objWMIService = Nothing
lien : Microsoft Win32 Service class
- 48 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WMI : Windows Management Instrumentation > Imprimantes : classe Win32_Printer
Comment lister les imprimantes installées ?
Auteurs : SilkyRoad ,
Lister les imprimantes installées et préciser laquelle est active :
VBS
Dim objWMIService, colInstalledPrinters, objPrinterDim nomPC, Resultat nomPC = "." Set objWMIService = GetObject("winmgmts:" & _"{impersonationLevel=impersonate}!\\" & nomPC & "\root\cimv2")Set colInstalledPrinters = _ objWMIService.execQuery("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters Resultat = Resultat & "Nom: " & objPrinter.Name & " active : " _ & objPrinter.Default & vbLfNext MsgBox Resultat
Comment lister les propriétés des imprimantes installées ?
Auteurs : SilkyRoad ,
Cet exemple liste toutes les propriétés des imprimantes renvoyées pas la classe Win32_PrinterConfiguration :
VBS
Dim objWMIService, colPrinters, objItemDim strComputer On Error Resume NextstrComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colPrinters = objWMIService.ExecQuery("Select * from Win32_PrinterConfiguration")', , 48) For Each objItem In colPrinters Wscript.echo "Caption: " & objItem.Caption & vbCR & _ "Collate: " & objItem.Collate & vbCR & _ "Color: " & objItem.Color & vbCR & _ "Copies: " & objItem.Copies & vbCR & _ "Description: " & objItem.Description & vbCR & _ "DeviceName: " & objItem.DeviceName & vbCR & _ "DisplayFlags: " & objItem.DisplayFlags & vbCR & _ "DisplayFrequency: " & objItem.DisplayFrequency & vbCR & _ "DitherType: " & objItem.DitherType & vbCR & _ "DriverVersion: " & objItem.DriverVersion & vbCR & _ "Duplex: " & objItem.Duplex & vbCR & _ "FormName: " & objItem.FormName & vbCR & _ "HorizontalResolution: " & objItem.HorizontalResolution & vbCR & _ "ICMIntent: " & objItem.ICMIntent & vbCR & _ "ICMMethod: " & objItem.ICMMethod & vbCR & _ "LogPixels: " & objItem.LogPixels & vbCR & _ "MediaType: " & objItem.MediaType & vbCR & _ "Nom: " & objItem.Name & vbCR & _ "Orientation: " & objItem.Orientation & vbCR & _
- 49 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBS "PaperLength: " & objItem.PaperLength & vbCR & _ "PaperSize: " & objItem.PaperSize & vbCR & _ "PaperWidth: " & objItem.PaperWidth & vbCR & _ "BitsPerPel: " & objItem.BitsPerPel & vbCR & _ "PelsHeight: " & objItem.PelsHeight & vbCR & _ "PelsWidth: " & objItem.PelsWidth & vbCR & _ "PrintQuality: " & objItem.PrintQuality & vbCR & _ "Scale: " & objItem.Scale & vbCR & _ "SettingID: " & objItem.SettingID & vbCR & _ "SpecificationVersion: " & objItem.SpecificationVersion & vbCR & _ "TTOption: " & objItem.TTOption & vbCR & _ "VerticalResolution: " & objItem.VerticalResolution & vbCR & _ "XResolution: " & objItem.XResolution & vbCR & _ "YResolution: " & objItem.YResolutionNext
Comment arrêter l'impression en cours et vider la file d'attente ?
Auteurs : SilkyRoad ,
VBS
Dim objWMIService, colInstalledPrinters, objPrinterDim strComputer strComputer = "."Set objWMIService = _ GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colInstalledPrinters = _ objWMIService.ExecQuery("Select * from Win32_Printer") For Each objPrinter In colInstalledPrinters objPrinter.CancelAllJobsNextWscript.echo "OK" Set objWMIService = NothingSet colInstalledPrinters = Nothing
- 50 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WMI : Windows Management Instrumentation > Réseaux
Comment faire un ping réseau grâce à WMI ?
Auteurs : Forum ,
Pour Windows Server 2003, XP et supérieur, en utilisant la classe Win32_PingStatus :
VBS
strComputer = InputBox ("Adresse IP ou Url à 'Pinger' ") On Error Resume Nextmsgbox ("Ping de : " strComputer)Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("select * from Win32_PingStatus where address = '" & strComputer & "'")For Each objStatus in objPingIf objStatus.Statuscode = 0 Thenmsgbox ("TEST OK : " & objStatus.Statuscode) elsemsgbox ("TEST NOK : " & objStatus.Statuscode)End IfNext
Pour Windows 2000, en utilisant l'objet Shell de WScript:
VBS
strComputer = "10.169.6.16" 'Ping version Win2000Set objShell = CreateObject("WScript.Shell")Set objScriptExec = objShell.Exec( _ "ping -n 2 -w 1000 " & strComputer)strPingResults = LCase(objScriptExec.StdOut.ReadAll)If InStr(strPingResults, "perdus = 0") Then msgbox (strComputer & " repond au ping !")Else msgbox (strComputer & " na pas repondu au ping!")End If
lien : Microsoft MSDN: Win32_PingStatus
Comment obtenir les informations issues des cartes réseau à la manière d'un IPCONFIG ?
Auteurs : bbil ,
Le code suivant permet d'afficher l'état des configurations des cartes réseaux d'un PC :
VBS
Computer=InputBox ("Nom de l'ordinateur à tester où rien pour celui-ci : ","IpConfig")On error resume next set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE") If Err.Number<>0 Then wscript.echo " - non accessible -" Else for each IPConfig in IPConfigSet MsgBox " Configuration réseau de l'ordinateur " & computer & vbcrlf & vbcrlf & _ " Carte " & vbtab & vbtab & " : " & IPConfig.Description & vbcrlf & _ " adresse MAC " & vbtab & " : " & IPConfig.MACAddress & vbcrlf & _
- 51 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
VBS " adresse IP " & vbtab & " : " & IPConfig.IPAddress(0) & vbcrlf & _ " DNSHostName " & vbtab & " : " & IPConfig.DNSHostName _ ,,"Configuration " Next End If
- 52 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WSH : Windows Scripting Host
Définition
Auteurs : ThierryAIM ,
Source Microsoft® :WSH (l'abréviation pour Microsoft® Windows® Script Host) est un hôte de script indépendant du langage utilisé pourles moteurs de script compatibles avec Windows Script. Il vous permet d'écrire facilement des scripts très puissants et trèssouples à destination des plates-formes Windows 32 bits, que vous pouvez exécuter depuis le bureau de Windows ou l'invitede commande.Windows Script Host est idéal pour les scripts non interactifs, tels que les scripts de connexion, d'administration oud'automatisation d'ordinateurs.
Dans cette FAQ, nous nous attacherons principalement aux exemples d'utilisation dans VBScript.
- 53 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WSH : Windows Scripting Host > Shell (wshShell)
Comment exécuter un programme externe ?
Auteurs : bbil ,
La méthode Run de l'objet WshShell permet cela :Exécution "bloquante" de la calculatrice Windows.
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")Return = WshShell.Run("calc" , 1, true) MsgBox "Fin utilisation calculatrice"
Paramètres de WshShell.Run strCommand,intWindowStyle,bWaitOnReturn- strCommand : Chaîne de caractère, ligne de commande à exécuter- intWindowStyle : 1 : Active la fenêtre dans sa taille et position d'origine- bWaitOnReturn : à True, attend la fin de l'exécution du programme avant d'effectuer la suite..
avec intWindowStyle :0 Masque la fenêtre et en active une autre.1 Active et affiche une fenêtre. Si la fenêtre est réduite ou agrandie, le système lui redonne sa taille et sa position d'origine.Une application doit spécifier cette indication lors du premier affichage de la fenêtre.2 Active la fenêtre et l'affiche en taille réduite.3 Active la fenêtre et l'affiche en taille agrandie.4 Affiche une fenêtre en respectant sa taille et sa position les plus récentes. La fenêtre active reste active.5 Active la fenêtre et l'affiche d'après sa taille et sa position actuelle.6 Réduit la fenêtre spécifiée et active la fenêtre de niveau supérieur suivante dans l'ordre alphabétique.7 Affiche la fenêtre sous l'aspect d'une fenêtre réduite. La fenêtre active reste active.8 Affiche la fenêtre dans son état actuel. La fenêtre active reste active.9 Active et affiche la fenêtre. Si la fenêtre est réduite ou agrandie, le système lui redonne sa taille et sa position d'origine.Une application doit spécifier cet indicateur lors de la restauration d'une fenêtre réduite.10 Définit l'état d'affichage en fonction de l'état du programme qui a démarré l'application.
Comment lister les dossiers spéciaux de Windows ?
Auteurs : ThierryAIM ,
La propriété SpecialFolders de l'objet WshShell permet d'obtenir les références aux dossiers spéciaux de Windows(Bureau, Favoris,etc...Liste des dossiers spéciaux de Windows disponibles :
• AllUsersDesktop• AllUsersStartMenu• AllUsersPrograms• AllUsersStartup• Desktop• Favorites• Fonts• MyDocuments• NetHood• PrintHood• Programs
- 54 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
• Recent• SendTo• StartMenu• Startup• Templates
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")For i = 0 to WshShell.SpecialFolders.Count -1 sf = sf & WshShell.SpecialFolders(i) & vbCrNextMsgBox sf,,"Répertoires spéciaux de Windows"
Accéder à un dossier particulier, dont on connaît le nom (le Bureau, dans l'exemple ci-dessous) :
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")MsgBox WshShell.SpecialFolders("Desktop")
Comment écrire dans le journal d'évènements de Windows ?
Auteurs : Catbull ,
VBS
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.LogEvent 0, "Execution du script"
lien : Microsoft Windows Script Host : LogEvent method
Comment simuler l'envoi de caractères vers une application externe ?
Auteurs : Forum , ThierryAIM ,
La méthode SendKeys de l'objet WScript permet d'envoyer une ou plusieurs entrées clavier à la fenêtre active.
Pour spécifier les touches d'actions (qui ne sont pas des caractères), voir le tableau ci-dessous :
- 55 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Touche CodeRETOUR ARRIERE {BACKSPACE}, {BS}, ou {BKSP}VERR. MAJ {CAPSLOCK}VERR. NUM {NUMLOCK}ARRET DEFIL {SCROLLLOCK}IMPR. ECRAN {PRTSC} (Ne peut être envoyé à une
application externe)FLÈCHE VERS LE BAS, LE HAUT,A GAUCHE, A DROITE
{DOWN}, {UP}, {LEFT}, {RIGHT}
PAGE SUIVANTE, PRECEDENTE {PGDN}, {PGUP}ENTREE {ENTER} ou ~ORIGINE {HOME}FIN {END}ECHAP {ESC}INSERT {INSERT} ou {INS}SUPPR {DELETE} ou {DEL}TAB {TAB}F1 à F16 {F1} ... {F16}
Les touches d'altération :
• Maj : +• Ctrl : ^• Alt : %
Elles s'utilisent en combinaison avec les touches à émettre :
• "+ab" envoie Ab• "+(ab)" envoie AB• "{+a 5}" envoie AAAAA
Exemple d'utilisationOuvrir la calculatrice et effectuer une opération :
VBS
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" '-- Ouvre la calculatrice de Windows WScript.Sleep 200 WshShell.AppActivate "Calculatrice" '-- Active l'application WScript.Sleep 200 WshShell.SendKeys "4*2" WScript.Sleep 100 WshShell.SendKeys "{Enter}"
Comment créer un raccourci vers un site internet où un programme sur le bureau de windows
Auteurs : Forum ,
Source Microsoft VBScript
Dim Shell, DesktopPath, URL
- 56 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Source Microsoft VBScript Set Shell = CreateObject("WScript.Shell") DesktopPath = Shell.SpecialFolders("Desktop") Set URL = Shell.CreateShortcut(DesktopPath & "\MonForumPreferé.URL") URL.TargetPath = "http://www.developpez.net/forums" URL.WorkingDirectory = "c:\tmp" URL.Save
On garde le même principe pour un programme :
Dim Shell, DesktopPath, URLSet Shell = CreateObject("WScript.Shell")DesktopPath = Shell.SpecialFolders("Desktop")Set URL = Shell.CreateShortcut(DesktopPath & "\monraccourci.lnk")URL.IconLocation = "monicone.ico"URL.TargetPath = "chemin\monexe.exe"URL.WorkingDirectory = "c:\tmp"URL.Arguments = "-para monparametre"URL.SaveSET oFS = nothing
- 57 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WSH : Windows Scripting Host > Réseau (wshNetwork)
Comment connaître le nom réseau de l'ordinateur ?
Auteurs : argyronet ,
VBS
Set wshNetwork = CreateObject("Wscript.Network")MsgBox wshNetwork.ComputerName
Comment connaître le nom de l'utilisateur réseau courant ?
Auteurs : Jean-Marc Rabilloud ,
VBS
Set wshNetwork = CreateObject("Wscript.Network")MsgBox wshNetwork.UserName
Comment connaître le nom de domaine de l'utilisateur courant ?
Auteurs : ThierryAIM ,
VBS
Set wshNetwork = CreateObject("Wscript.Network")MsgBox wshNetwork.UserDomain
Comment "mapper" une unité réseau à la manière du net use du dos ?
Auteurs : bbil ,
VBS
Set WshNetwork = WScript.CreateObject("WScript.Network")WshNetwork.MapNetworkDrive "R:","\\NOM_ORDINATEUR\REPERTOIRE",false,"NOM_UTILISATEUR","MOT_DE_PASSE"
Comment "mapper" les imprimantes réseau ?
Auteurs : ThierryAIM ,
VBS
Set WshNetwork = WScript.CreateObject("WScript.Network")Set oPrinters = WshNetwork.EnumPrinterConnectionsFor i = 0 to oPrinters.Count - 1 Step 2 MapPrinters = MapPrinters & "Port : " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1) & vbCrNextMsgBox MapPrinters,,"Mappage Imprimantes Réseau"
- 58 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
Sommaire > WSH : Windows Scripting Host > Autres
Comment accéder aux variables d'environnement de Windows ?
Auteurs : ThierryAIM ,
L'objet WshEnvironment contient les variables d'environnement de Windows:
Vous pouvez accéder aux variables de type :• Process• System• User• Volatile
L'exemple suivant affiche le nom de l'utilisateur courant :
VBS
Set WshShellObj = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShellObj.Environment("Process") WScript.Echo WshProcessEnv("USERNAME")
L'exemple suivant affiche la variable d'environnement PATH du système :
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShell.Environment("Process")WScript.Echo "PATH = " & WshProcessEnv("PATH")
L'exemple suivant affiche les informations du processeur :
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")Set WshSysEnv = WshShell.Environment("System")WScript.Echo WshSysEnv("PROCESSOR_ARCHITECTURE") & vbCr _ & WshSysEnv("PROCESSOR_IDENTIFIER") & vbCr _ & WshSysEnv("PROCESSOR_LEVEL") & vbCr _ & WshSysEnv("PROCESSOR_REVISION")
La propriété Count de l'objet WshEnvironment renvoie le nombre de variables d'environnement dans le typesélectionné :
VBS
Set WshShell = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShell.Environment("Process")WScript.Echo WshProcessEnv.Count
Comment créer ou effacer une variable environnement ?
Auteurs : l_autodidacte , ProgElecT , bbil ,
La propriété Environment de l'objet WshShell renvoie une collection WshEnvironment de variables.
- 59 -Les sources présentées sur cette pages sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre la page de présentation de ces sourcesconstitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2011 Developpez LLC. Tout droits réservés Developpez LLC. Aucunereproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de DeveloppezLLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts.
http://vb.developpez.com/
La création d'une variable se fait lors de l'affectation à une valeur, la méthode remove permet d'effacer la variableenvironnement
vbDim WshShell, WshProcessEnvSet WshShell = WScript.CreateObject("WScript.Shell")Set WshProcessEnv = WshShell.Environment("Process")'Créer une variable d'environnementWshProcessEnv("DVP") = "developpez.com"'Affiche la variableWScript.Echo WshShell.ExpandEnvironmentStrings("La valeur de la variable DVP = '%DVP%'")WshProcessEnv.Remove "DVP"WScript.Echo WshShell.ExpandEnvironmentStrings("Aprés l'avoir effacée : '%DVP%'")
Comment jouer un son ?
Auteurs : Forum , bbil ,
En utilisant un appel à l'application magnétophone de Windows.
vbOption explicitDim stFicSon,WshShellSet WshShell = WScript.CreateObject("WScript.Shell")stFicSon = "C:\WINDOWS\Media\chimes.wav"WshShell.Run "sndrec32 /play /embedding /close " & stFicSon , 0, true
Appel dynamique d'une fonction via une variable ?
Auteurs : omen999 ,
en utilisant GetRef
vbFunction AddNum(lNum1,lNum2) AddNum = lNum1 + lNum2End FunctionFunction MultNum(lNum1,lNum2) MultNum = lNum1 * lNum2 End FunctionSet FuncVar = GetRef("AddNum")MsgBox FuncVar(5,6)Set FuncVar = GetRef("MultNum")MsgBox FuncVar(5,6)