2011-07-28 27 views
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 

所有我想要的是打印 「returnVal」 所以,如果我打的能力:

test.vbs 1 2 3 4 

這將返回:

The arguments you passed me are 1 2 3 4 

我該怎麼做?

回答

6

要輸出到命令控制檯窗口你可以使用這樣做:

WScript.Echo returnVal 

WScript.StdOut.WriteLine returnVal 

但你必須使用的CScript主持人這個工作,例如:

cscript.exe myscript.vbs 

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!" 

在WScript的主機使用WScript.Echo將顯示該消息在彈出對話框中而不是打印到命令行窗口中。

欲瞭解更多信息,請參閱:

Write Method (Windows Script Host)

有關的WScript和CScript將如何之間差異的詳細信息,在它們之間進行切換:

Sesame Script Stop and Go (MS TechNet)

Th Cscript和WScript的區別在於Cscript是腳本宿主的 命令行版本,Wscript是圖形 版本。除非您的腳本 使用Wscript.Echo命令,否則這種差異並不明顯。

+1

黨 - 3秒......你包括CSCRIPT使用。 – Filburt

+1

對於我的罪孽,我曾在一家銀行工作,並曾經照顧過一個完全用vbscript編寫的30000行版本系統。這種經歷被不可逆轉地燒燬到我的頭腦:) – Kev

+0

我沒有認爲這是一個難題,但我對腳本是新手。謝謝你:) – Landister

3

如果你不後的消息框建議的@heximal,你應該使用標準輸出的:

WScript.StdOut.Write(returnVal) 

重要:這需要的CScript是主機可執行文件。

change the default script host,使用

cscript //h:cscript //s