2

我正在使用下面的脚本来调用另一个脚本。问题是我必须将通过 WScript.Arguments 检索到的参数传递给我正在调用的第二个脚本。有人可以告诉我该怎么做。

Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")

objShell.Run "TestScript.vbs"    

Set objShell = Nothing
4

3 回答 3

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
于 2013-07-03T08:36:20.757 回答
0

利用:

objShell.Run "TestScript.vbs arg1 arg2"

如果其中一个参数包含空格,那么您需要将它们嵌入引号中,可能像这样:

objShell.Run "TestScript.vbs arg1 arg2 ""this is three"""

或者它可以接受撇号(我最近没有尝试过)。

于 2013-07-02T23:56:11.153 回答
0

我发现答案有点混乱,所以这是我的,在我看来更简单。另一个答案没有错,只是不同(略有不同)。

在 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
于 2018-01-25T21:29:53.083 回答