Подтвердить что ты не робот

Программно извлекать tar.gz за один шаг (на окнах с 7zip)

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Старый вопрос, но я боролся с ним сегодня, так вот мой 2c. Инструмент командной строки 7zip "7z.exe" (у меня установлен v9.22) может записывать в stdout и читать из stdin, чтобы вы могли обойтись без промежуточного файла 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"

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

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

Ответ 4

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

Утилита tartool (http://tartool.codeplex.com/) - это бесплатный инструмент с открытым исходным кодом, созданный с использованием библиотеки .NET SharpZipLib.

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

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

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