как получить результат от wscript.execute () мне нужно трубопровод - PullRequest
0 голосов
/ 25 апреля 2010

Я хочу получить результат от выполнения команды с помощью wscript сказать:

wscript.execute("dir c:\")

Мне нужно знать, как я могу получить доступ к результатам этого или другими словами, я хочу знать, как я могу передать результат в мой сценарий?

С уважением.

1 Ответ

0 голосов
/ 22 ноября 2010

Сначала вам нужно создать объект оболочки:

var shell = WScript.CreateObject("WScript.Shell");

Тогда есть два метода на выбор. Простой способ использует функцию Shell Run и отправляет вывод команды в файл, который вы впоследствии прочитаете:

var errorCode = shell.Run("cmd /c dir c:\\ > tmp.txt", 1, true); 
    // (1 -> Display window, true -> wait for command to finish)

В качестве альтернативы, также возможно захватить вывод команды напрямую, используя функцию Shell Exec:

var cmdRun = shell.Exec("cmd /c dir c:\\");
while (cmdRun.Status == 0) // wait for the command to finish
{
  WScript.Sleep(100);
}

Exec возвращает объект, представляющий процесс, в этом случае мы получаем доступ к стандартному выводу как объект TextStream.

var output = cmdRun.StdOut.ReadAll();

Можно ожидать, что вы сможете взаимодействовать с новым процессом, используя возвращаемый объект и его стандартные каналы ввода / вывода, но, по моему мнению, это не работает Например, я не могу найти способ чтения стандартного вывода, который не блокирует сценарий, пока команда не завершит выполнение.

...