Problem: I would like to be able to extract tar.gz files in a single step. This makes my question almost identical to this one: Stack Overflow qu
Old question, but I was struggling with it today so here's my 2c. The 7zip commandline tool "7z.exe" (I have v9.22 installed) can write to stdout and read from stdin so you can do without the intermediate tar file by using a pipe:
7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"
Where:
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
See the help file (7-zip.chm) in the install directory for more info on the command line commands and switches.
As noted by @zespri powershell will buffer the input to the second 7z process so can consume a lot of memory if your tar file is large. i.e:
& 7z x "somename.tar.gz" -so | & 7z x -aoa -si -ttar -o"somename"
A workaround from this SO answer if you want to do this from powershell is to pass the commands to cmd.exe:
& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'