2009-04-17 37 views
2

我保留了大量的vbscript用於在我的網絡上執行各種啓動腳本,並且我幾乎在所有這些腳本中都使用了一些函數。保持VBScript有組織

缺少複製和粘貼,沒有人有建議,我可以如何創建可重複使用的VBScript代碼庫。我並不反對使用代碼生成器,只要它不比複製和粘貼更令人頭疼。但任何建議,將不勝感激。

感謝

+0

這可能有助於
http://hubpages.com/hub/Libraries_in_VBScript_Code
MSDN:使用Windows腳本文件(.wsf的)](http://msdn.microsoft .com/en-us/library/15x4407c.aspx)
http://en.wikipedia.org/wiki/Wind ows_Script_File – Tester101 2009-04-17 18:20:06

回答

6

VBScript中有Execute語句,所以如果你不想去WSF路線Tester101建議,你可以做一個包括這樣的:

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

Execute fso.OpenTextFile(file, 1).ReadAll 

Set foo = New FooClass 
MsgBox foo.GetBar() 

假設"your_library.vbs"將包含一個類別定義爲FooClass

一定要在全局環境中調用Execute,否則您將進入範圍界定問題。

當然一定要嚴格控制所有文件以防止惡意使用。

+0

所以「your_library.vbs」必須包含一個類定義,而不僅僅是一組例程? – Tester101 2009-04-17 18:45:22

+1

@ Tester101:其實你可以在文件中放入任何東西。這個類只是一個例子,函數和子類將會工作一樣。 – Tomalak 2009-04-17 20:53:18

3

我使用合成include(如下所示)並將我的庫存儲在一個子目錄中。

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 

顯然,如果有一個錯誤在包含的腳本,你不會得到一個非常有用的錯誤消息(VBScript中不能告訴你行出現了什麼問題的。)一旦一切作品,然而...

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