vbscript include的办法实现代码第1/2页

2019-01-16 03:56:01于丽

if UCase(a) = UCase(fullArgName) then

' erase it so we can look for unknown args later
v = args(x)
args(x) = ""

if Len(v) > argNameLength then
GetArgValue = Mid(v, argNameLength + 1)
exit function
else
GetArgValue = ""
exit function
end if
end if
end if
next
end function

更多的时候,我们需要在脚本之间共享变量,以及相互调用函数。我们想要得到C/C++中那样的便利性:通过一个Include声明,就可以将另外一个模块中的函数和变量引入到当前的模块中。在VBScript中,可以通过ExecuteGlobal来实现:

Sub Include(sInstFile)
Dim oFSO, f, s
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set f = oFSO.OpenTextFile(sInstFile)
s = f.ReadAll
f.Close
ExecuteGlobal s
End Sub

这样,在脚本中加上这样一句调用:Include "mylib.vbs",就可以使用mylib.vbs中声明的全局变量和函数了!注意这里的函数ExecuteGlobal有一个类似的函数Execute,这里如果使用Execute的话,就达不到我们想要的效果。因为通过Execute暴露的名字,其作用范围局限于Execute所处的级别,在这里,也就是在函数Include内部。这几乎肯定不是你想要的结果。

还有别的方法吗?是的。VBScript内在的支持COM方式。如果可以将你的脚本编译成一个COM组件,就当然可以在别的脚本中调用组件中的方法了。恰好,MS提供了工具Script Component Wizard来帮助我们将一些VBScript文件打包成一个组件,并提供注册方法。

现在我们来学一些新的方法。我的意思是,这些方法是仅为WSH支持的,你可能以前并没有遇见过。WSH支持一种叫*.wsf的文件,这个文件本身是XML格式的,通过该文件可以将你的VBScript脚本,以及其它类型的脚本,比如batch,perl等等组装在一起,交给WSH来执行。这方面文档还算详细,这里就不多介绍了。

这一节里,介绍了由单个脚本文件组装成一个较大的工程的四种方法,通过运用这些方法,你可以建立自己的常用函数库,在各个脚本之间共享变量和传递数据,等等。
在网上找到一段实现的代码,在这次的项目中起了大作用了。用vbs实现很多复杂的业务时,需要把一些公共的函数,class等写在一个公共的可复用的vbs文件里,像个库一样,其他的脚本都包含这个库的脚本。

Sub Include(sInstFile)
Dim oFSO, f, s
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set f = oFSO.OpenTextFile(sInstFile)
s = f.ReadAll
f.Close
ExecuteGlobal s
End Sub

使用的时候,这个把这个sub放在代码里,然后用 Include "comm.vbs" 这样来包含以下就可以了
12下一页阅读全文