2016-08-12 12 views
0

私は、ノードのspawn()以下に示しているもの等を介してバッチスクリプトを実行しようとしています:ノードchild_process:ネストされたバッチファイル

const spawn = require('child_process').spawn; 
const script = require.resolve('./script_1.bat'); 
const bat = spawn(script); 

/* program runs properly (for the most part) */ 
bat.stderr.on('data', (data) => { 
    console.log('stdErr: ' + data); 
}); 

bat.on('exit', (code) => { 
    console.log('Child exited with code' + code); 
}); 

問題はscript_1.batが同じディレクトリにscript_2.batcallコマンドを持っているということです。

`call script_2.bat` 

コマンドラインでscript_1.batを実行すると正常に動作します。私はノードからscript_1.batを実行したときしかし、私はコンソールでこれを参照してください。

stdErr: 'script_2.bat' is not recognized as an internal or external command, operable program or batch file. 

私は、ノードの子プロセスの文書を通じて掘るために私の最善を行っているが、私はこれが起こる理由についてexplinationを見つけることができませんでした。入れ子にされたバッチファイルをspawn()メソッドに渡す方法はありますか?

お時間をいただきありがとうございます。

+0

私は、Javaに慣れていないんだけど、あなたが得るエラーメッセージが** script_2.bat ** cmdは、ファイルを見つけることができないことを示しています。 ** script_2.bat **と同じパスから** script_1.bat **が生成されているかどうかを確認するために、呼び出しの前に** cd&pause **コマンドを配置してみてください。 – elzooilogico

+0

@elizooilogicoファイルパスに問題がありました。 'script_1.bat'を' script_2.bat'の絶対パスを参照するように更新しました。これはノードで働いていました。あなたがそれを私が受け入れる答えに入れることができるならば、 – Mac

+0

は、Javaコードが独自のパスで始まり、明示的なパスを参照しないので、デフォルトのJavaパスを呼び出しの開始点にする問題のようです。あなたがそれを解決したことを知ってうれしく思います、そしてフィードバックに感謝します。 – elzooilogico

答えて

0

変更は、この第一バッチで:

call ./script_2.bat 
関連する問題