Вопрос

ПРОБЛЕМА: Я хотел бы иметь возможность извлекать tar.gz файлы за один шаг.Это делает мой вопрос почти идентичный этому: вопрос stackoverflow для tar-gz.

Мой вопрос заключается в следующем почти то же самое, но не то же самое, потому что я хотел бы сделать это в Windows, используя командную строку 7zip (или что-то подобное) внутри bat-файла или скрипта ruby / perl / python.

ВОПРОС: Эта, казалось бы, простая задача оказывается более сложной, чем можно было бы предположить на первый взгляд.У кого-нибудь уже есть скрипт, который это делает?

Это было полезно?

Решение

7z e example.tar.gz  && 7z x example.tar

Использование && объединить две команды за один шаг.Используйте 7zip portable (вам понадобится 7z.exe и только 7z.dll)

Другие советы

Старый вопрос, но сегодня я боролся с ним, так что вот мой 2c.Инструмент командной строки 7zip "7z.exe " (у меня установлена версия 9.22) может выполнять запись в стандартный вывод и чтение из стандартного файла, поэтому вы можете обойтись без промежуточного файла tar, используя канал:

7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"

Где:

x     = Extract with full paths command
-so   = write to stdout switch
-si   = read from stdin switch
-aoa  = Overwrite all existing files without prompt.
-ttar = Treat the stdin byte stream as a TAR file
-o    = output directory

Смотрите файл справки (7-zip.chm) в каталоге установки для получения дополнительной информации о командах и переключателях командной строки.

Как отмеченный Автор: @zespri powershell будет буферизовать входные данные для второго процесса 7z, поэтому может занимать много памяти, если ваш tar-файл большой.т.е.:

& 7z x "somename.tar.gz" -so  | & 7z x -aoa -si -ttar -o"somename"

Обходной путь из это ТАКОЙ ответ если вы хотите сделать это из powershell, это передать команды в cmd.exe:

& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'

Используйте win32 порт tar.

tar -xvfz filename.tar.gz

Поскольку вы просили 7-zip или что-то подобное, я предоставляю альтернативный инструмент, который был написан именно для вашего варианта использования.

В утилита tartool ( тартул ) это бесплатный инструмент с открытым исходным кодом, созданный с использованием библиотеки .NET SharpZipLib.

Пример команды commmand для извлечения .tar.gz / .tgz - файл,

C:\>TarTool.exe D:\sample.tar.gz ./

Отказ от ответственности :Я являюсь автором этой утилиты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top