2009-04-17 7 views
2

Je maintiens un bon nombre de vbscripts pour exécuter divers scripts de démarrage sur mon réseau et j'ai une poignée de fonctions que j'utilise dans la plupart d'entre eux. À moins de copier-coller, quelqu'un a-t-il des suggestions sur la façon dont je peux créer des bibliothèques de code vbscript réutilisable? Je ne suis pas opposé à l'utilisation d'un générateur de code pour le faire tant que ce n'est pas plus d'un mal de tête que copier et coller est. Mais toute recommandation serait appréciée.Garder VBScript organisé

Merci

+0

Cela pourrait aider
http://hubpages.com/hub/Libraries_in_VBScript_Code
MSDN: [Utilisation de Windows Script fichiers (.wsf)] (http://msdn.microsoft .com/fr-fr/library/15x4407c.aspx)
http://fr.wikipedia.org/wiki/Wind ows_Script_File – Tester101

Répondre

6

VBScript a la déclaration Execute, donc si vous ne voulez pas aller la route du FSM Tester101 propose, vous pouvez faire un include comme ceci:

Set fso = CreateObject("Scripting.FileSystemObject") 
file = "your_library.vbs" 

Execute fso.OpenTextFile(file, 1).ReadAll 

Set foo = New FooClass 
MsgBox foo.GetBar() 

En supposant "your_library.vbs" contiendrait une définition de classe pour FooClass. Assurez-vous d'appeler Exécuter dans un contexte global, sinon vous aurez des problèmes de portée.

Bien sûr, assurez-vous que tous vos fichiers sont sous contrôle strict afin d'éviter toute utilisation malveillante.

+0

Donc "your_library.vbs" doit contenir une définition de classe, pas seulement une collection de routines? – Tester101

+1

@ Tester101: En fait, vous pouvez mettre n'importe quoi dans le fichier. La classe était juste un exemple, les fonctions et les sous-marins fonctionneront de la même manière. – Tomalak

+0

J'aime cette approche, car elle ne vous force pas à utiliser WSH. Dans ma situation je suis cependant, mais toujours propre à savoir. –

3

J'utilise un include synthétique (comme ci-dessous) et stocke mes bibliothèques dans un sous-répertoire.

Sub Include(scriptName) 
    Dim sScript 
    Dim oStream 
    With CreateObject("Scripting.FileSystemobject") 
    Set oStream = .OpenTextFile(scriptName) 
    End With 
    sScript = oStream.ReadAll() 
    oStream.Close 
    ExecuteGlobal sScript 
End Sub 

Il est évident que, s'il y a une erreur dans le script inclus, vous n'allez obtenir un message d'erreur très utile (VBScript ne sera pas en mesure de vous dire quelle ligne le problème est survenu sur.) Une fois que tout travaux, mais ...

Include "c:\script\stdlib.vbs" 
Include "c:\script\INI.cls" 
+0

+1 pour ExecuteGlobal –