Получить вывод на выполнение оболочки в JS с ActiveXObject

1

Я попытался получить результат обратного вызова exe файла, когда я делаю оболочку следующим образом:

var oShell = new ActiveXObject("WScript.Shell");
var args = folderName + "\\dir\\scan.exe scan " + params.join(" ");
var ret = oShell.Run(args ,0 ,true);

но ret дает мне 0 за неудачу и 1 за успех. когда я запускаю файл в cmd следующим образом:

scan.exe arg1 arg2 arg3

это возвращает правильный результат, который я хотел: "test/test", а не 1...

Что я могу сделать?

tnx много

Теги:
cmd

1 ответ

0

Я знаю, что, возможно, я немного опоздаю, чтобы ответить на этот вопрос, но я надеюсь, что он все равно может помочь кому-то.

Я достиг этого с помощью функции oShell.Exec() а не с oShell.Run().

oShell.Exec() возвращает объект с свойством StdOut который действует как текстовый файл, поэтому вы можете выполнять ReadLine(), ReadAll() и т.д.

Проблема в том, что он не StdOut завершения команды, поэтому при запуске кода очень вероятно, что ваш объект StdOut не будет undefined. Вы должны добавить этот параметр ожидания в самой команде.

var wshShell = new ActiveXObject("WScript.Shell");

try {
    // Excecute the 'cd' command. 
    wshShell.CurrentDirectory = "C:\\Users";
    var execOut = wshShell.Exec('cmd /C start /wait /b cd');
}
catch (e) {
    console.log(e);
}

// Get command execution output.
var cmdStdOut = execOut.StdOut;
var line = cmdStdOut.ReadLine();
console.log(line);

Приведенный выше код выполнит команду cd в каталоге C:\Users и сохранит вывод в line.

Надеюсь, это ответит на вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню