我正在使用 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
有没有人有修复或解决方法?
*已删除链接
答案 0 :(得分:12)
要打开包含空格的路径,必须使用双反斜杠替换。
在您的代码中,您转义了空格字符:
"\ "
您需要做的是转义反斜杠字符,使其成为输出字符串:
"\\ "
试试这个:
var path = __dirname + '/folder to open/';
// Notice the double-backslashes on this following line
path = path.replace(/ /g, '\\ ');
require("child_process").exec("start " + path);
答案 1 :(得分:3)
好吧,我修好了。
或类似的东西。
而不是使用
"start " + path
我用过
"%SystemRoot%\\explorer.exe \"" + path + "\""
注意引号和正斜杠。
答案 2 :(得分:0)
这对我有用
f= file.replace(/ /g,"\\\ ")
答案 3 :(得分:0)
您还可以为每个路径使用老式最多 8 个字符/无空格的名称。
我一直使用的总是编码 c:\PROGRA~1
而不是 c:\Program Files
,尽管这只适用于英文系统。
如果任何具有更多字符的路径的前 8 个字符是唯一的,我希望您可以执行类似 newPath = origPath.sub(/\W/g, '').substr(0, 6) + "~1"
这里没有windows系统,只能靠内存。