web-dev-qa-db-ja.com

node.jsから外部アプリケーションを起動します

Node.jsを使用してローカルファイルシステムにアクセスするデスクトップWebアプリを作成しています。現在、node.jsを使用して、ファイルを開いてハードドライブの別の場所にコピーできます。また、ファイルの種類に関連付けられているアプリケーションを使用して、ユーザーが特定のファイルを開くことができるようにします。つまり、ユーザーがWindows環境で「myfile.doc」を選択すると、そのファイルでMSWordが起動します。

Node.jsと通信する子プロセスの生成以外何も見つけることができなかったので、私は用語の犠牲者である必要があります。ユーザーが表示できるようにファイルを起動し、それをどうするかをユーザーに決定させたいだけです。

ありがとう

16
Pete Gardner

あなたはこれを行うことができます

_var cp = require("child_process");
cp.exec("document.docx"); // notice this without a callback..
process.exit(0); // exit this nodejs process
_

コマンドがエラーや望ましくない出力を表示しないようにするのは安全ではありません

コールバックパラメータchild_process.exec(cmd,function(error,stdout,stderr){})を追加する必要があります

次に、イベントを操作して、スクリプトの実行をブロックしたり、「マスター」スクリプトから生成したプロセスからの出力を起動して処理する外部node.jsスクリプトを利用したりすることもできます。

19
Gntem

以下の例では、textmate "mate"コマンドを使用してファイルhello.jsを編集しています。child_process.execで任意のコマンドを実行できますが、ファイルを開くアプリケーションには、コマンドラインオプションが用意されているはずです。

var exec = require('child_process').exec;
exec('mate hello.js');
6
Yalamber
var childProcess = require('child_process');
childProcess.exec('start Example.xlsx', function (err, stdout, stderr) {
        if (err) {
        console.error(err);
        return;
    }
    console.log(stdout);
    process.exit(0);// exit process once it is opened
})

「exit」が呼び出される場所を強調します。これはウィンドウで正しく実行されます。

2
RemyG

コマンドプロンプトから、またはプログラムでファイル(拡張子が.exeを含む任意のファイル)を呼び出すだけです。

var exec = require('child_process').exec;
exec('C:\\Users\\Path\\to\\File.js', function (err, stdout, stderr) {
    if (err) {
        throw err;
    }
})

拡張子なしでファイルを実行したい場合は、次のようにほぼ同じことができます。

var exec = require('child_process').exec;
exec('start C:\\Users\\Path\\to\\File', function (err, stdout, stderr) {
    if (err) {
        throw err;
    }
})

ご覧のとおり、startを使用してファイルを開き、ウィンドウ(またはウィンドウ)にアプリケーションを選択させます。

0
JulianSoto