2017-09-14 110 views

回答

-1

本示例调用函数或子函数并动态地找到正确的调用。在命令行中,您提供'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 

简便的事例:https://ss64.com/vb/syntax-args.html

+0

这帮助了我。但正如你所提到的,eval()不适合我。 – user8533698

+2

@ user8533698'Eval()'评估它不能执行完整语句的条件,您应该使用'Execute()'/'ExecuteGlobal()'。另外,上面的例子会因为分配给'a'的字符串不正确而导致语法错误。不要接受不完整/错误的答案,它不会帮助任何人。 – Lankymart

+1

刚刚纠正了赋值为'a'的语法错误 –