当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 + "\""
注意引号和正斜杠。