大津さん

教えて頂いた方法で、フルパスコマンドのコマンドをたたくことができました。
また、コンソールログを出して確認をしたところ、「C:\cmdstd.bat」となっていたので、
ご指摘通りエスケープシーケンスの問題でした。



2013年5月19日日曜日 18時52分39秒 UTC+9 竹内佑介:
>
> お世話になっています、竹内です。
>
>
> 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()の実行コマンドにフルパスを指定する方法について教えて頂けないでしょうか。
>

-- 

--- 
このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。


メールによる返信