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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top