以下のスクリプトを使用して別のスクリプトを呼び出しています。問題は、WScript.Arguments によって取得した引数を、呼び出している 2 番目のスクリプトに渡す必要があることです。誰かがその方法を教えてください。
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
以下のスクリプトを使用して別のスクリプトを呼び出しています。問題は、WScript.Arguments によって取得した引数を、呼び出している 2 番目のスクリプトに渡す必要があることです。誰かがその方法を教えてください。
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"
引数の 1 つにスペースが含まれている場合は、おそらく次のように、これらを引用符で囲む必要があります。
objShell.Run "TestScript.vbs arg1 arg2 ""this is three"""
または、アポストロフィを受け入れることもできます (私は最近これを試していません)。