当path有空格时,无法执行child_process.exec()

我正在使用appjs ,我想执行一个命令来打开一个文件夹。

我拥有的

var path = __dirname + '/folder to open/'; // path = C:\Program Files\myapplication/folder to open/ require("child_process").exec("start " + path); 

错误

找不到文件C:\ Program

我试过了

我已经试图逃离这个空间,那没用。

 var path = __dirname + '/folder to open/'; path = path.replace(' ', '\ '); // path = C:\Program Files\myapplication/folder to open/ require("child_process").exec("start " + path); 

当我把引号之间的path,没有文件夹被打开,只有另一个提示。

 var path = "\"" + __dirname + "/folder to open/\""; path = path.replace(' ', '\ '); // path = "C:\Program Files\myapplication/folder to open/" require("child_process").exec("start " + path); 

相关的bug https://github.com/isaacs/npm/pull/2479

有没有人有一个修复或解决方法?

要打开一个不包含空格的path,必须用双反斜杠replace。

在你的代码中你逃过了空格字符:

 "\ " 

你需要做的是将反斜杠字符转换成输出string:

 "\\ " 

尝试这个:

 var path = __dirname + '/folder to open/'; // Notice the double-backslashes on this following line path = path.replace(/ /g, '\\ '); require("child_process").exec("start " + path); 

好吧,我修好了。

或者类似的东西。

而不是使用

"start " + path

我用了

"%SystemRoot%\\explorer.exe \"" + path + "\""

注意引号和正斜杠。