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

Ron*_*den 12 shell-exec node.js

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

是)我有的

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

错误

找不到文件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);
Run Code Online (Sandbox Code Playgroud)

当我把路径放在引号之间时,没有打开文件夹,只有另一个提示.

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

相关错误https://github.com/isaacs/npm/pull/2479

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

*链接已删除

f1l*_*t3r 13

要打开包含空格的路径,必须使用双反斜杠替换.

在您的代码中,您转义了空格字符:

"\ "
Run Code Online (Sandbox Code Playgroud)

您需要做的是转义反斜杠字符,使其成为输出字符串:

"\\ "
Run Code Online (Sandbox Code Playgroud)

试试这个:

var path = __dirname + '/folder to open/'; 

// Notice the double-backslashes on this following line
path = path.replace(/ /g, '\\ ');

require("child_process").exec("start " + path);
Run Code Online (Sandbox Code Playgroud)


Ron*_*den 5

嗯,我修好了。

或者类似的东西。

而不是使用

"start " + path

我用了

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

注意引号和正斜杠。