dre*_*mac 34 scripting gzip 7zip tar archive
问题:我希望能够一步提取tar.gz文件.这使我的问题几乎 与这个问题相同:tar-gz的stackoverflow问题.
我的问题是几乎相同的,但不一样的,因为我想做到这一点,使用7zip的命令行(或类似的东西)一个bat文件或红宝石/的Perl/Python脚本内的窗口.
问题:这个看似简单的任务证明比第一次出现更具参与性.有没有人有一个脚本可以做到这一点?
use*_*856 80
老问题,但我今天正在努力,所以这是我的2c.该7zip的命令行工具"7z.exe"(我已经安装v9.22)可以写入stdout和标准输入读取,所以你可以通过使用管道无需中间的tar文件做:
7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"
Run Code Online (Sandbox Code Playgroud)
哪里:
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
Run Code Online (Sandbox Code Playgroud)
有关命令行命令和开关的详细信息,请参阅安装目录中的帮助文件(7-zip.chm).
正如指出的@zespri的PowerShell将输入缓冲器的第二7Z过程中,如果您的tar文件较大,因此会消耗大量的内存.即:
& 7z x "somename.tar.gz" -so | & 7z x -aoa -si -ttar -o"somename"
Run Code Online (Sandbox Code Playgroud)
如果您想从powershell执行此操作,那么来自此SO答案的解决方法是将命令传递给cmd.exe:
& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'
Run Code Online (Sandbox Code Playgroud)
sva*_*agt 30
7z e example.tar.gz && 7z x example.tar
Run Code Online (Sandbox Code Playgroud)
使用&&
两个命令在一个步骤结合起来.使用7zip portable(你只需要7z.exe和7z.dll)
由于您要求使用7-zip或类似的东西,我提供的是为您的确切用例编写的替代工具.
该tartool程序是使用.NET SharpZipLib库建立一个自由和开放源码工具.
用于提取.tar.gz
/ .tgz
- 文件的示例命令,
C:\>TarTool.exe D:\sample.tar.gz ./
Run Code Online (Sandbox Code Playgroud)
免责声明:我是该实用程序的作者.