направление вывода из выполненного процесса в текущий cmd - PullRequest
1 голос
/ 21 декабря 2011

Могу ли я выполнить программу из сценария JScript таким образом, чтобы вывод исполняемой программы был записан в текущую консоль?

В настоящее время я использую Shell.Application.ShellExecute, и этооткрытие еще одной новой консоли для исполняемого приложения.

JScript в моем случае - это оболочка вокруг компилятора, который выполняется с помощью ShellExecute.Так что происходит то, что все ошибки компилятора теряются, потому что они печатаются в другой консоли.

1 Ответ

2 голосов
/ 26 марта 2012

Если вас беспокоит только захват выходных данных компилятора, вы можете перенаправить вывод в файл (я предлагаю как stdout, так и stderr).Примерно так:

var shell = new ActiveXObject("WScript.Shell");
shell.Exec('YourCommand 1>yourOutput.txt 2>&1 ')

Если вы действительно хотите увидеть выход в текущем окне консоли (я вас не виню), то вы можете использовать это:

var shell = new ActiveXObject("WScript.Shell");
WScript.StdOut.Write( shell.Exec('YourCommand 2>&1').StdOut.ReadAll() );

Примечание. Если ваша команда потенциально может запрашивать ввод, то вы должны предоставить ввод через канал или перенаправление в командной строке (или вы можете перенаправить ввод в nul).В противном случае программа зависнет.

...