在Node.js中使用参数执行exe文件

4
我希望您能使用Node.js来执行一个exe文件。在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 这样的参数,我该如何传递?

谢谢, Ajith


你可以将所有参数作为逗号分隔的同一数组。['-de',路径,'Test.mod','Test.dat'] - Deendayal Garg
出现以下错误:execFile('oplrun', ['-de' path, 'Test.mod','Test.dat'], function(err, data) { ^^^^ SyntaxError: 意外的标识符 at Module._compile (module.js:439:25) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3 - Ajith
1个回答

6
execFile()的签名在Node文档中显示为: file[, args][, options][, callback] 由于您没有提供任何选项,因此应该传递一个单独的数组,就像您的第一个示例一样。
execFile('oplrun', ['-de', 'output.dat', 'Test.mod','Test.dat'], function(err, data) {
        if(err) {
            console.log(err)
        } 
        else 
        console.log(data.toString());                       
    }); 

嗨,我已经尝试过了。但是那并不起作用。这里是错误信息: { [Error: Command failed: Unknown option: -de output.dat ] killed: false, code: 10, signal: null } - Ajith
非常感谢你,邓肯。这个很好用。感谢你的帮助。 - Ajith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接