0

我正在使用 Node FFI 模块并尝试在 Windows 上运行同步任务。我可以使用以下代码成功运行任务。

var ffi=require('ffi')
var nativeC = new ffi.Library("Kernel32", {
"WinExec": ["int32", ["string"]]
});

nativeC.WinExec('ls -lrt');

我认为这是执行同步任务的方式,但此代码总是在第一个“ls -lrt”命令之后退出;如果我链接更多命令,它们将无法工作。那么,这里是否有回调函数,在 FFI 模块中,或者我可以在 Windows 上的 node.js 中链接命令的另一种方式,以便它们一个接一个地同步运行。

4

1 回答 1

1

我不确定您是否需要 WinExec 来运行 Windows 命令。正如乔纳森指出的那样, ls 不可用。

但是,如果你想链接命令,你可以像这样使用 async.js 和 exec:

var
  async = require('async'); 
  exec = require('child_process').exec,
  commands = [ 'dir /w', 'echo test'];

var executeCommand = function(command, callback){
  exec(command, function (err, stdout, stderr) {
    if(err) return callback(err);
    console.log(stdout);
    callback();
  });
};

async.eachSeries(commands, executeCommand, function(err){
  console.log('error: ' + err);
});
于 2013-07-08T23:59:16.860 回答