Неверное количество элементов для чтения из консоли с помощью UFT

У меня есть следующая простая проблема с UFT.

Мой сценарий:

Dim testShell
Set testShell = CreateObject ("wscript.shell")
testShell.exec "cmd /K CD C:\ & Dir"
msgbox(testShell.Exec.StdOut)

Что дает мне следующую ошибку:

Неверное количество аргументов: строка «testShell.exec» (4): «msgbox (testShell.Exec.StdOut)».

До сих пор я просмотрел несколько сценариев VbScript, и там, похоже, все работает без проблем. Почему мой скрипт не работает? Я очень уверен, что это что-то очень глупое и простое, но я не вижу своей ошибки. Я просто хочу получить вывод моей оболочки в переменную, чтобы я мог с ней работать.


person tarrasch    schedule 30.08.2015    source источник


Ответы (1)


Вам нужен объект, возвращаемый .Exec, чтобы получить .StdOut и его содержимое, а /K должно быть /C:

>> Set testShell = CreateObject ("wscript.shell")
>> Set oExec = testShell.exec("%comspec% /C CD C:\ & Dir")
>> WScript.Echo oExec.StdOut.ReadAll()
>>
 Volume in drive C has no label.
 ...
 25.05.2011  19:32    <DIR>          apache-ant-1.8.2
 ...
person Ekkehard.Horner    schedule 30.08.2015
comment
Что делает /C? Пробуем сейчас. - person tarrasch; 30.08.2015
comment
@tarrasch — cmd создает новый интерпретатор команд. /k держит его открытым после запуска команды. /c закрывает его после выполнения команды. - person Bond; 30.08.2015