Как вывести список аргументов, переданных в сценарий VBScript? - PullRequest
3 голосов
/ 28 июля 2011

У меня есть следующий код 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

Как я могу это сделать?

Ответы [ 2 ]

6 голосов
/ 28 июля 2011

Для вывода в окно командной консоли вы можете сделать это, используя:

WScript.Echo returnVal 

или

WScript.StdOut.WriteLine returnVal 

Но вы должны использовать хост CScript , чтобы это работало, например:

cscript.exe myscript.vbs

WScript является хостом GUI и поэтому не знает стандартных потоков ввода / вывода / ошибки / aux. Попытка сделать 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.Echo на хосте WScript отобразит сообщение во всплывающем диалоге вместо печати в окне командной строки.

Для получения дополнительной информации см .:

Метод записи (Windows Script Host)

Для получения дополнительной информации о различиях между WScript и CScript и о том, как переключаться между ними:

Сценарий «Сезам» Остановись и иди (MS TechNet)

Разница между Cscript и Wscript заключается в том, что Cscript является версия командной строки скрипта хоста и Wscript является графическим версия. Эта разница не очень заметна, если ваш сценарий использует команду Wscript.Echo.

3 голосов
/ 28 июля 2011

Если вы не после окна сообщений, предложенного @heximal, вам следует использовать StdOut:

WScript.StdOut.Write(returnVal)

Важно: Для этого требуется CScript в качестве исполняемого файла хоста.

На изменить хост скрипта по умолчанию , использовать

cscript //h:cscript //s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...