JScript: 外部コマンドを並列実行する
コマンド(文字列)の配列をパラメータに取り、指定されたコマンドを並列実行し、
各コマンドのリターンコードを配列として返す関数。
コマンドが見つからない場合は –1 を返す。
var executeAsyncCommands = function(commands) {
var n = commands.length;
var processes = new Array(n);
var returns = new Array(n);
var success = new Array(n);
var shell = new ActiveXObject("WScript.Shell");
for (var i = 0; i < n; ++i) {
try {
processes[i] = shell.Exec(commands[i]);
success[i] = true;
}
catch(e) {
success[i] = false;
}
}
L: while (true) {
WScript.Sleep(100);
for (i = 0; i < n; ++i) {
if (success[i] && processes[i].Status == 0) continue L;
}
break;
}
for (var i = 0; i < n; ++i) {
returns[i] = success[i] ? processes[i].ExitCode : -1;
}
return returns;
};
0 件のコメント:
コメントを投稿