【发布时间】:2009-04-17 17:45:08
【问题描述】:
我维护了大量用于在我的网络上执行各种启动脚本的 vbscript,并且我几乎在所有这些脚本中都使用了一些函数。
没有复制和粘贴,有人对我如何创建可重用的 vbscript 代码库有什么建议吗?我不反对使用代码生成器来这样做,只要它不比复制和粘贴更令人头疼。但任何建议都将不胜感激。
谢谢
【问题讨论】:
标签: vbscript code-reuse organization
我维护了大量用于在我的网络上执行各种启动脚本的 vbscript,并且我几乎在所有这些脚本中都使用了一些函数。
没有复制和粘贴,有人对我如何创建可重用的 vbscript 代码库有什么建议吗?我不反对使用代码生成器来这样做,只要它不比复制和粘贴更令人头疼。但任何建议都将不胜感激。
谢谢
【问题讨论】:
标签: vbscript code-reuse organization
VBScript 有 Execute 语句,所以如果你不想走 Tester101 建议的 WSF 路线,你可以像这样做一个包含:
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,否则您会遇到范围界定问题。
当然,请务必严格控制您的所有文件,以防止恶意使用。
【讨论】:
我使用合成的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"
【讨论】: