programmazione estrarre tar.gz in un unico passaggio (su finestre con 7zip)
Domanda
PROBLEMA: Mi piacerebbe essere in grado di estrarre i file tar.gz in un unico passaggio. Questo rende la mia domanda quasi identica a questa: domanda StackOverflow per tar-gz .
La mia domanda è quasi lo stesso, ma non lo stesso, perché mi piacerebbe fare questo su Windows utilizzando 7zip della riga di comando (o qualcosa di simile) all'interno di un file bat o Ruby / Perl / script python.
DOMANDA: Questa apparentemente semplice compito sta dimostrando di essere più coinvolti rispetto alla prima apparizione renderebbe fuori per essere. Qualcuno ha uno script che fa questo già?
Soluzione
7z e example.tar.gz && 7z x example.tar
Usa &&
per unire due comandi in un unico passaggio. Usare 7zip portatile (è necessario 7z.exe e 7z.dll solo)
Altri suggerimenti
vecchia questione, ma ero alle prese con oggi ecco la mia 2c. Lo strumento a riga di comando 7zip "7z.exe" (ho installato v9.22) può scrivere sullo standard output e leggere da standard input in modo da poter fare a meno del file tar intermedio utilizzando un tubo:
7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"
Dove:
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
Vedere il file di aiuto (7-zip.chm) nella directory di installazione per ulteriori informazioni sui comandi della riga di comando e interruttori.
notato da @zespri powershell per bufferizzare l'ingresso per il secondo processo 7z così può consumare molta memoria se il file tar è di grandi dimensioni. cioè:
& 7z x "somename.tar.gz" -so | & 7z x -aoa -si -ttar -o"somename"
Una soluzione da questo SO rispondere se si vuole fare questo da PowerShell è di passare i comandi a cmd.exe :
& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'
Utilizza il win32 di catrame .
tar -xvfz filename.tar.gz
Poiché hai chiesto 7-Zip o qualcosa di simile, sto fornendo uno strumento alternativo che è stato scritto per il vostro caso esatto utilizzo.
Il tartool utilità è uno strumento gratuito e open source costruito utilizzando la libreria .NET SharpZipLib.
Esempio commmand per estrarre un / .tar.gz
.tgz
- File,
C:\>TarTool.exe D:\sample.tar.gz ./
. Disclaimer: Io sono l'autore di questa utility