16

我正在使用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);

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

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

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

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

* 链接已删除

4

4 回答 4

17

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

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

"\ "

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

"\\ "

试试这个:

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

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

require("child_process").exec("start " + path);
于 2014-11-18T15:50:15.633 回答
5

嗯,我修好了。

或者类似的东西。

而不是使用

"start " + path

我用了

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

注意引号和正斜杠。

于 2013-05-06T14:06:48.850 回答
0

这对我有用

f= file.replace(/ /g,"\\\ ")
于 2018-02-16T08:07:57.180 回答
0

您还可以为每个路径使用旧式的 8-character-max/no-space 名称。

我一直使用的总是编码c:\PROGRA~1而不是c:\Program Files,尽管这只适用于英文系统。

如果任何具有更多字符的路径的前 8 个字符是唯一的,我希望您可以执行类似的操作newPath = origPath.sub(/\W/g, '').substr(0, 6) + "~1"

这里没有windows系统,凭记忆去。

于 2021-01-07T19:48:31.313 回答