программно извлечь tar.gz за один шаг (в Windows с 7zip)
Вопрос
ПРОБЛЕМА: Я хотел бы иметь возможность извлекать 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 ./
Отказ от ответственности :Я являюсь автором этой утилиты.