Windows 7 VBScript如何加入WScript.Arguments?

Windows 7 VBScript如何加入WScript.Arguments?,windows-7,vbscript,command-line-arguments,Windows 7,Vbscript,Command Line Arguments,我正在尝试将参数连接到一个字符串,以传递给另一个脚本。以下是: WScript.Echo(Join(WScript.Arguments)) 给我一个错误: Error: Wrong number of arguments or invalid property assignment Code: 800A01C2 这种语法有什么问题?对象不是数组,因此不能对它们使用Join()。您可以这样做: ReDim arr(WScript.Arguments.Count-1) For i = 0 To

我正在尝试将参数连接到一个字符串,以传递给另一个脚本。以下是:

WScript.Echo(Join(WScript.Arguments))
给我一个错误:

Error: Wrong number of arguments or invalid property assignment
Code: 800A01C2
这种语法有什么问题?

对象不是数组,因此不能对它们使用
Join()
。您可以这样做:

ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
  arr(i) = WScript.Arguments(i)
Next

WScript.Echo Join(arr)

另一种解决方案是使用系统中的ArrayList对象:

Set oAL = CreateObject("System.Collections.ArrayList")
For Each oItem In Wscript.Arguments: oAL.Add oItem: Next
WScript.Echo Join(oAL.ToArray, " ")
这将为每个参数添加引号,
然后,您可以在批处理文件中使用%%1将其删除,依此类推。

当某些参数已被引用时,此答案不起作用,例如,
“C:\Program Files\”
@RolandIllig该答案对于问题中描述的问题非常有效。当然,它可能对你不起作用,但话说回来,我一开始并没有回答你的问题。@AnsgarWiechers如果你的回答不起作用,如果某些论点被引用,那么它“对问题中描述的问题不起作用[]完全好。”问题中的任何内容都没有说明要连接的参数都不会被引号包围,或者如果包含它们,则可以在连接中省略它们。因此,在一些符合问题中描述的标准的用例中,您的答案是失败的。
            ReDim arr(WScript.Arguments.Count-1)
            For i = 0 To WScript.Arguments.Count-1
              arr(i) = """"+WScript.Arguments(i)+""""
            Next
            WScript.Echo Join(arr)