2013-07-08 20 views
0

Я использую модуль Node FFI и пытаюсь запустить задачи синхронизации в Windows. Я могу успешно выполнить задачу, используя следующий код.Выполнение синхронных задач с использованием node.js на окнах

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

nativeC.WinExec('ls -lrt'); 

Я полагаю, что это способ выполнения синхронизации задач, но этот код всегда завершается после 1-го «Ls -lrt» команды; если я подключу еще несколько команд, они не сработают. Итак, есть ли функция обратного вызова здесь, в модуле FFI или каким-то другим способом я могу связать команды в node.js в Windows, чтобы они выполнялись синхронно, один за другим.

+0

[команду ls] (http://linux.die.net/man/1/ls) обычно не доступен в Windows [за пределами PowerShell] (http://technet.microsoft.com/en-us/library/hh849800.aspx) (и это не распознает опции -lrt'). Работает ли команда в 'cmd.exe'? Для нескольких пользователей? –

+0

Итак, я использую Git bash, поэтому я могу использовать ls, я думал о публикации этого, так что жаль, что я этого не сделал. – anonymous123

+0

Попробуйте 'nativeC.WinExec ('bash -c" ls -lrt "');'. Даже если вы используете 'bash' для выполнения сценария, [' WinExec() ', похоже, не использует его] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms687393 .aspx) (обратите внимание на его второй аргумент). –

ответ

1

Я не уверен, что вам нужна WinExec для запуска команды Windows. Как указал Джонатан, их нет.

Однако, если вы хотите, чтобы команды цепи можно использовать 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); 
}); 
+0

Спасибо, это то, что я искал – anonymous123

Смежные вопросы