Nodejs запускают exe с полного пути | дочернего процесса

#node.js #child-process

#node.js #дочерний процесс

Вопрос:

Я должен запустить exe-файл с полным путем к игре.

Я перепробовал много комбинированных команд, основная цель — выполнить полный путь, подобный этому, потому что мне приходится повторять множество разных игр.

 var rainbow = "D:\Games\Tom Clancy's Rainbow Six Siege\rainbowsix.exe"
child_process.exec(rainbow);
  

Я знаю, что могу запустить игру таким образом:

 var path = "D:\Games\Tom Clancy's Rainbow Six Siege\"; 

child_process.exec('rainbowsix.exe', {cwd: path});
  

Но я должен запускать его только с полным путем.

Спасибо за любую помощь: D

Комментарии:

1. Я извлекаю путь из json, и путь не содержит \, но я могу сделать обходной путь и использовать \ . Это только пример: D

2. Я отредактировал вопрос, проблема та же, игра не запускается.

3. Что происходит, когда вы cwd правильно устанавливаете значение в первом вызове?

4. Проблема в том, что я не могу установить cwd, потому что у меня есть только путь, я должен разделить игровой путь и восстановить папку с игрой и exe. Мне было интересно, есть ли способ сделать это только с полным путем

5. Нет, если exe ожидает запуска с текущим рабочим каталогом в определенном месте (что, похоже, и происходит здесь). Используйте path модуль для разделения пути на каталог и файл ( см. ), А затем используйте второй подход.

Ответ №1:

Как сказал Томалак в комментариях, мне пришлось использовать модуль path, поэтому я разделил каталог и название игры. И чем мне пришлось добавить '\\' в конце строки.

 var dirgame = path.dirname(id) '\\';
var namegame = path.basename(id);
child_process.exec(namegame, {cwd: dirgame});
  

Комментарии:

1. Я не думаю, что вам нужно добавлять `\\` в конце, это не имеет смысла. Что произойдет, если вы этого не сделаете?

2. Если я не добавлю его, игра не запустится

3. Это … странно. Что произойдет, если вы используете только одну экранированную обратную косую черту? Например, ` ‘ \»

4. Да, странно, мне потребовалось много времени, чтобы обнаружить это, потому что я тоже думал, что это неправильно, но игра запускается, только если я добавлю ‘\\’ ровно 4

Ответ №2:

Вы должны перейти к диску amp; game_path amp; game_name.exe (используя exec дочернего процесса).

Пример:

 let link = "e: amp; cd E:GAMESINSTALLEDFable The Lost Chapters amp; Fable.exe"
let process = child_process.exec(link, function (err, data) {
    console.log(err)
    console.log(data.toString());
});