如何输出传递给VBScript脚本的参数列表?

Lan*_*ter 3 vbscript

我有以下VBScript代码:

Dim returnVal
returnVal = "You did not pass me 4 arguments"

args = WScript.Arguments.Count

If args = 4 Then
    returnVal = "The arguements you passed me are " & WScript.Arguments.Item(0) & "  "  & WScript.Arguments.Item(1) & "  "  & WScript.Arguments.Item(2) & "  "  & WScript.Arguments.Item(3) 
end if
Run Code Online (Sandbox Code Playgroud)

我想要的是打印"returnVal"的能力,这样如果我输入:

test.vbs 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

它将返回:

The arguments you passed me are 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Kev*_*Kev 6

要输出到命令控制台窗口,您可以使用以下命令:

WScript.Echo returnVal 
Run Code Online (Sandbox Code Playgroud)

要么

WScript.StdOut.WriteLine returnVal 
Run Code Online (Sandbox Code Playgroud)

但是你必须使用CScript主机才能工作,例如:

cscript.exe myscript.vbs
Run Code Online (Sandbox Code Playgroud)

WScript是GUI主机,因此不了解标准输入/输出/错误/辅助流.尝试做WScript.StdOut.WriteLine会导致以下错误对话:

---------------------------
Windows Script Host
---------------------------
Script: d:\myscript.vbs
Line:   12
Char:   1
Error:  The handle is invalid. 
Code:   80070006
Source:     (null)

---------------------------
OK   
---------------------------

在CScript.exe脚本中,您仍然可以使用以下命令弹出GUI消息对话:

Msgbox "Hello World!" 
Run Code Online (Sandbox Code Playgroud)

使用WScript.Echo在主机的WScript将显示在一个弹出对话而不是打印到命令行窗口中的消息.

有关更多信息,请参阅

写入方法(Windows脚本宿主)

有关WScript和CScript之间的差异以及如何在它们之间切换的更多信息:

Sesame Script Stop and Go(MS TechNet)

Cscript和Wscript之间的区别在于Cscript是脚本主机的命令行版本,Wscript是图形版本.除非您的脚本使用Wscript.Echo命令,否则这种差异并不明显.