smead
smead

Reputation: 1808

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?

Upvotes: 12

Views: 4730

Answers (4)

Safwan
Safwan

Reputation: 360

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

Upvotes: 0

RDR
RDR

Reputation: 161

            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.

Upvotes: 2

n3rd4i
n3rd4i

Reputation: 193

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, " ")

Upvotes: 3

Ansgar Wiechers
Ansgar Wiechers

Reputation: 200293

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)

Upvotes: 8

Related Questions