Невозможно выполнить child_process.exec(), когда путь имеет пробелы

Я использую appjs, и я хочу выполнить команду для открытия папки.

Что у меня

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

Error

Не удалось найти файл 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

У кого-нибудь есть исправление или обход?

Ответ 1

Ну, я исправил его.

Или что-то в этом роде.

Вместо использования

"start " + path

Я использовал

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

Обратите внимание на кавычки и косые черты.

Ответ 2

Чтобы открыть путь, чем содержит пробелы, вы должны заменить двойную обратную косую черту.

В вашем коде вы избегаете символа пробела:

"\ "

Что вам нужно сделать, так это вывести символ обратной косой черты, чтобы он попал в выходную строку:

"\\ "

Попробуйте следующее:

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

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

require("child_process").exec("start " + path);

Ответ 3

это работает для меня

f= file.replace(/ /g,"\\\ ")