#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());
});