我使用下面的脚本调用另一个脚本。问题是我必须将我通过WScript.Arguments检索的参数传递给我正在调用的第二个脚本。有人请告诉我该怎么做。< / p>
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
答案 0 :(得分:5)
您需要通过正确引用参数来构建参数列表。您还需要区分命名和未命名的参数。至少,所有带空格的参数必须放在双引号之间。但是,简单地引用所有参数并没有什么坏处,所以你可以这样做:
Function qq(str)
qq = Chr(34) & str & Chr(34)
End Function
arglist = ""
With WScript.Arguments
For Each arg In .Named
arglist = arglist & " /" & arg & ":" & qq(.Named(arg))
Next
For Each arg In .Unnamed
arglist = arglist & " " & qq(arg)
Next
End With
CreateObject("WScript.Shell").Run "TestScript.vbs " & Trim(arglist), 0, True
答案 1 :(得分:0)
使用:
objShell.Run "TestScript.vbs arg1 arg2"
如果其中一个参数包含空格,那么您需要将它们嵌入引号中,可能是这样的:
objShell.Run "TestScript.vbs arg1 arg2 ""this is three"""
或者它可能接受撇号(我最近没有尝试过这个)。
答案 2 :(得分:0)
我发现答案有点令人困惑,所以这是我的,在我看来它更简单。另一个答案是错的,只是不同(略)。
在test.vbs文件中:
Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\some\path\"
x = "testing"
shell.Run "test1.vbs " & x
<{1>}文件中的:
C:\some\path\test1.vbs
从test.vbs文件生成消息框,传递给test1.vbs文件:
x = WScript.Arguments.Item(0)
msgbox x