如何从命令行调用VBS的函数/子程序?
问题描述:
我正在尝试自动化Outlook桌面应用程序。我有不同的子程序写在一个VB脚本文件(file.vbs),它执行不同种类的操作在Outlook上。我想从命令行调用其中一个子过程。我怎么做?如何从命令行调用VBS的函数/子程序?
答
本示例调用函数或子函数并动态地找到正确的调用。在命令行中,您提供'functionToExecute'作为您想调用的函数的名称或'subToExecute'作为您想调用的子例程。对于从命令行调用VBS一分两个例子分别是功能:
cscript.exe demo.vbs subToExecute
cscript.exe demo.vbs functionToExecute
在VBS脚本得到命令行参数的程序的名称,并决定是否要调用一个子程序或致电功能:用于VBS命令行处理
On Error Resume Next
mySubOrFuncName = WScript.Arguments.Item(0) 'name of the subroutine or function
subCall = "call " & mySubOrFuncName & "()"
Execute subCall
If Err.Number <> 0 Then 'if sub could not be called, take the function call
eval(mySubOrFuncName)
Err.Clear
End If
WScript.Quit
'this is a subroutine you already have
Sub subToExecute
MsgBox "inside a sub"
'do stuff
End Sub
'this is a function you already have
Function functionToExecute
MsgBox "inside a function"
'do stuff
End Function
这帮助了我。但正如你所提到的,eval()不适合我。 – user8533698
@ user8533698'Eval()'评估它不能执行完整语句的条件,您应该使用'Execute()'/'ExecuteGlobal()'。另外,上面的例子会因为分配给'a'的字符串不正确而导致语法错误。不要接受不完整/错误的答案,它不会帮助任何人。 – Lankymart
刚刚纠正了赋值为'a'的语法错误 –