Extraia programaticamente o tar.gz em uma única etapa (no Windows com 7zip)
Pergunta
PROBLEMA: Eu gostaria de poder extrair arquivos tar.gz em uma única etapa. Isso faz minha pergunta quase idêntico a este: Pergunta de Stackoverflow para Tar-Gz.
Minha pergunta é quase O mesmo, mas não o mesmo, porque eu gostaria de fazer isso no Windows usando a linha de comando 7ZIP (ou algo semelhante) dentro de um arquivo de bat de morcego ou script Ruby/Perl/Python.
PERGUNTA: Essa tarefa aparentemente simples está se mostrando mais envolvida do que a primeira aparição faria com que seja. Alguém já tem um script que já faz isso?
Solução
7z e example.tar.gz && 7z x example.tar
Usar &&
Para combinar dois comandos em uma etapa. Use 7Zip Portable (você precisará apenas de 7z.exe e 7z.dll)
Outras dicas
Pergunta antiga, mas eu estava lutando hoje, então aqui está o meu 2C. A ferramenta 7ZIP CommandLine "7Z.exe" (eu tenho v9.22 instalada) pode escrever para stdout e ler a partir de stdin para que você possa fazer sem o arquivo alcalão intermediário usando um tubo:
7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"
Onde:
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
Consulte o arquivo de ajuda (7-zip.chm) no diretório de instalação para obter mais informações sobre os comandos e switches da linha de comando.
Como notado por @ZesPri O PowerShell atinge a entrada para o segundo processo 7Z, para que possa consumir muita memória se o seu arquivo TAR for grande. ou seja:
& 7z x "somename.tar.gz" -so | & 7z x -aoa -si -ttar -o"somename"
Uma solução alternativa de isso responde Se você quiser fazer isso da PowerShell é passar os comandos para cmd.exe:
& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'
Use o Porto de alcatrão win32.
tar -xvfz filename.tar.gz
Como você pediu 7-ZIP ou algo semelhante, estou fornecendo uma ferramenta alternativa que foi escrita para o seu caso de uso exato.
o Utilitário Tartool é uma ferramenta gratuita e de código aberto criado usando a biblioteca .Net Sharpziplib.
Exemplo commmand para extrair um .tar.gz
/ .tgz
- Arquivo,
C:\>TarTool.exe D:\sample.tar.gz ./
Isenção de responsabilidade: Eu sou o autor deste utilitário.