#javascript #node.js #command-line-interface #7zip
#javascript #node.js #интерфейс командной строки #7zip
Вопрос:
У меня есть следующий js-код, который должен добавить все файлы в текущем каталоге в архив 7z:
"use strict";
const { execSync } = require("child_process");
process.chdir("C:\Program Files\7-Zip\");
let clicommand = "7z a Files.7z " __dirname "\ *.* -r";
execSync(clicommand, (error) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
});
console.log("Current dir: " __dirname);
console.log("clicommand : " clicommand);
Если запустить его из окна терминала в VS Code.
Он что-то делает в течение секунды или около того, затем распечатывает:
Current dir: D:nodenode_http_server
clicommand : 7z a Files.7z D:nodenode_http_server *.* -r
Но zip-архив не создается в D:nodenode_http_server .
Запуск команды
"C:Program Files7-Zip7z.exe" a Files.7z *.* -r
непосредственно из консоли работает нормально, в чем моя ошибка?
Комментарии:
1.
execSync
не принимает обратный вызов — он возвращает стандартный вывод команды nodejs.org/api /. … Кроме того, во второй команде отсутствует"D:nodenode_http_server"
. Что произойдет, если вы запустите ту же самую команду в командной строке? И каково содержимое возвращаемого значения execSync ?2. Я также пробовал exec(), тот же результат. Какая вторая команда? Запуск в оболочке создает архив.
3. Я только что проверил C:Program Files7-Zip dir, архив там, хм