お世話になっています、竹内です。
Wdinwos版node.jsでspawn()に実行させるコマンドをフルパスで与えた場合に、
以下のようなエラーが出てしまいコマンドが実行されませんでした。
{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }
このプログラムはnode.jsからspawn()を使用して、
外部コマンドであるstd.batの呼び出しを実行するものです。
~node.jsのソースコード~
var child_process = require('child_process');
var command = 'C:\cmd\std.bat';
var args = [];
var options = {
'cwd' : 'C:\\cmd\\'
};
var child = child_process.spawn(command,args,options);
child.stdout.setEncoding('utf8');
child.stdout.on('data' , function(data) {
console.log('stdout : ' + data);
});
child.on('exit', function(code) {
console.log('child process done width ' + code);
});
child.on('error', function(err) {
console.log(err);
});
child.stderr.setEncoding('utf8');
child.stderr.on('data' , function(data) {
concole.log('std err : '+data);
});
~std.bat~
@echo off
echo test
node.jsのソースコードと同じ階層にstd.batを置いて相対パスで指定した場合は外部コマンド呼び出しに成功しましたが、
これをフルパスで指定するとエラー出てしまいます。
エラーコードである「ENOENT」を調べてみると、指定されたファイルおよびディレクトリがないという意味なので、
おそらくパス指定の問題なのではと考えています。
基本的な質問になってしまうのですが、
Windows版spawn()の実行コマンドにフルパスを指定する方法について教えて頂けないでしょうか。