我正在使用下面的脚本来调用另一个脚本。问题是我必须将通过 WScript.Arguments 检索到的参数传递给我正在调用的第二个脚本。有人可以告诉我该怎么做。
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
我正在使用下面的脚本来调用另一个脚本。问题是我必须将通过 WScript.Arguments 检索到的参数传递给我正在调用的第二个脚本。有人可以告诉我该怎么做。
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
您需要通过正确引用参数来构建参数列表。您还需要区分命名参数和未命名参数。至少,所有带有空格的参数都必须放在双引号之间。不过,简单地引用所有参数并没有什么坏处,因此您可以执行以下操作:
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
利用:
objShell.Run "TestScript.vbs arg1 arg2"
如果其中一个参数包含空格,那么您需要将它们嵌入引号中,可能像这样:
objShell.Run "TestScript.vbs arg1 arg2 ""this is three"""
或者它可以接受撇号(我最近没有尝试过)。
我发现答案有点混乱,所以这是我的,在我看来更简单。另一个答案没有错,只是不同(略有不同)。
在 test.vbs 文件中:
Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\some\path\"
x = "testing"
shell.Run "test1.vbs " & x
在C:\some\path\test1.vbs
文件中:
x = WScript.Arguments.Item(0)
msgbox x
来自 test.vbs 文件的结果消息框,传递给 test1.vbs 文件:
testing