Выполнение exe с параметрами в nodejs

Я хотел выполнить exe, используя node js. Вот как команда выглядит в командной строке Windows:

oplrun -D VersionId=3458 -de "output.dat" "Test.mod" "Test.dat"

Это работает нормально, и я получаю вывод в файле output.dat. Теперь я хотел выполнить то же самое с nodejs и использовал для этого execFile. Он работает нормально, если я запускаю:

var execFile = require('child_process').execFile;

execFile('oplrun',['Test.mod','Test.dat'], function(err, data) {
        if(err) {
            console.log(err)
        } 
        else 
        console.log(data.toString());                       
    }); 

Однако, если я хочу передать выходной файл или версию в качестве параметра, он не выполняется, и я также не получаю никаких ошибок. Вот код:

var execFile = require('child_process').execFile;

var path ='D:\\IBM\\ILOG\SAMPLE\\output.dat';

execFile('oplrun', ['-de',path],['Test.mod','Test.dat'], function(err, data) {
        if(err) {
            console.log(err)
        } 
        else 
        console.log(data.toString());                       
    }); 

Как мне передать параметры, если мне нужно передать что-то вроде -D VersionId=1111 или -de output.dat.

Спасибо, Аджит


person Ajith    schedule 06.04.2016    source источник
comment
вы можете указать все параметры в том же массиве, разделенном запятыми. ['-de',path, 'Test.mod','Test.dat']   -  person Deendayal Garg    schedule 06.04.2016
comment
Получение следующей ошибки: execFile('oplrun', ['-de' path, 'Test.mod','Test.dat'], function(err, data) { ^^^^ SyntaxError: Неожиданный идентификатор в Module._compile (module.js:439:25) в Object.Module._extensions..js (module.js:474:10) в Module.load (module.js:356:32) в Function.Module._load (module.js :312:12) в Function.Module.runMain (module.js:497:10) при запуске (node.js:119:16) в node.js:906:3   -  person Ajith    schedule 06.04.2016


Ответы (1)


Подпись execFile() показана в документах Node как:

файл[, аргументы][, параметры][, обратный вызов]

Поскольку вы не предоставляете никаких параметров, вы должны передавать один массив, как в первом примере.

execFile('oplrun', ['-de', 'output.dat', 'Test.mod','Test.dat'], function(err, data) {
        if(err) {
            console.log(err)
        } 
        else 
        console.log(data.toString());                       
    }); 
person duncanhall    schedule 06.04.2016
comment
Привет, я пробовал это. Но это не работает. Вот ошибка: { [Ошибка: сбой команды: неизвестная опция: -de output.dat] убит: ложь, код: 10, сигнал: ноль} - person Ajith; 06.04.2016
comment
Большое спасибо, Дункан. Это работает нормально. Ценю вашу помощь. - person Ajith; 06.04.2016