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

Windowsコマンドを実行するためにWinExecが必要かどうかはわかりません。Jonathan が指摘したように、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 に答える