遅れたリプライですが... 他の方法です。
\\ の代わりに / を使うと、ややこしい問題は起こりません。 Windowsではバックスラッシュ(エンマーク)でもスラッシュでも同じ様に指定できます。 "c:/cmd/std.bat" と指定しましょう。 古いアプリと INI ファイル形式でコマンド起動、ファイルのやりとりを行うのですが、 Escape しなくてもいいように、全部スラッシュ(/) を使うようにしました。 2013年5月20日 13:16 竹内佑介 <kaidouj...@gmail.com>: > 大津さん > > 教えて頂いた方法で、フルパスコマンドのコマンドをたたくことができました。 > また、コンソールログを出して確認をしたところ、「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 にアクセスしてください。 > > > -- --- このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。 このグループから退会し、メールの受信を停止するには、nodejs_jp+unsubscr...@googlegroups.com にメールを送信します。 その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。