Как распаковать архивы с помощью Node.js и CLI 7-Zip (методом spawn())?Javascript

Форум по Javascript
Ответить
Anonymous
 Как распаковать архивы с помощью Node.js и CLI 7-Zip (методом spawn())?

Сообщение Anonymous »

Мне нужно выполнить следующую задачу (с помощью всего двух инструментов: Node.js и 7-Zip CLI):
  • Рекурсивно прочитать каталог;
  • Для каждого файла с расширением .zip распаковать его с помощью 7-Zip CLI в каталог соответствующего файла (меня интересует использование метода «spawn()» для создания нового процесса);
  • Когда генерируется событие закрытия, зарегистрируйте соответствующий код выхода.
Я использовал следующий код:

Код: Выделить всё

import { readdir } from 'node:fs/promises';
import { join, extname } from 'node:path';
import { spawn } from 'node:child_process';

const pathToDir = 'D:\\test\\mydirectory';

try {
const entries = await readdir(pathToDir, { recursive: true, withFileTypes: true });
for (const entry of entries) {
const extension = extname(entry.name);

if (extension === '.zip') {
const extract = spawn( 'C:\\software\\7z2501-extra\\x64\\7za.exe', [ 'x', join(entry.parentPath, entry.name), '-o"' + entry.parentPath + '"' ] );
extract.on( 'close', ( code ) => console.log( `child process exited with code ${code}` ) );
}
}
} catch (err) {
console.error(err);
}
Но это не работает: файлы не распаковываются, все, что я получаю, это сообщения о том, что в 7-Zip произошла ошибка. Я попытался заключить второй аргумент в двойные кавычки:

Код: Выделить всё

'"' + join(entry.parentPath, entry.name) + '"'
Но результат тот же. Почему? Как решить проблему?

Подробнее здесь: https://stackoverflow.com/questions/798 ... pawn-metho
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»