'VBScript how to join WScript.Arguments?

I am trying to join the arguments to a string to be passed to another script. The following:

WScript.Echo(Join(WScript.Arguments))

gives me an error:

Error: Wrong number of arguments or invalid property assignment
Code: 800A01C2

What is wrong with that syntax?



Solution 1:[1]

WshArgument objects are not arrays, so you can't use Join() on them. What you can do is something like this:

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

WScript.Echo Join(arr)

Solution 2:[2]

Another solution can be done with ArrayList object from the system:

Set oAL = CreateObject("System.Collections.ArrayList")
For Each oItem In Wscript.Arguments: oAL.Add oItem: Next
WScript.Echo Join(oAL.ToArray, " ")

Solution 3:[3]

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

this will add quotes for each argument, you can then remove it in the batch file with %~1 and so on.

Solution 4:[4]

Here is the function that I use. It will return all the arguments whether they contain quotes or not in a string that you can pass to another script.

Function GetArguments()

 Dim Args, Arg

 If WSH.Arguments.Count > 0 Then
  For Each Arg In WSH.Arguments
   Args = Args & """" & Arg & """ "
  Next
  Args = " """"" & Trim(Args) & """"""
 End If

 GetArguments = Args

End Function

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ansgar Wiechers
Solution 2 n3rd4i
Solution 3 RDR
Solution 4 Safwan