以编程方式一步提取 tar.gz(在 Windows 上使用 7zip)
题
问题: 我希望能够一步提取 tar.gz 文件。这让我的问题 几乎 与此相同: tar-gz 的 stackoverflow 问题.
我的问题是 几乎 相同,但不一样,因为我想在 Windows 上使用 bat 文件或 ruby/perl/python 脚本中的 7zip 命令行(或类似的东西)来执行此操作。
问题: 事实证明,这个看似简单的任务比乍一看要复杂得多。有人已经有一个脚本可以做到这一点吗?
解决方案
7z e example.tar.gz && 7z x example.tar
使用&&
在一个步骤中组合两个命令。使用7zip的便携式(需要7z.exe和7z.dll只)
其他提示
老问题,但我用它,所以今天在这里挣扎是我2C。所述7zip的命令行工具“7z.exe”(我已经安装v9.22)可以写入stdout和通过使用管道从stdin读所以可以没有中间tar文件做:
7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"
其中:
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
请参阅安装目录帮助文件(7- zip.chm),用于在命令行命令和开关的详细信息。
如注意到 @zespri 的powershell 的将输入缓冲器的第二7Z过程,从而可以消耗如果大量的内存您的tar文件较大。即:
& 7z x "somename.tar.gz" -so | & 7z x -aoa -si -ttar -o"somename"
通过一种解决方法,如果你想从PowerShell中做这个苏答案是传递命令CMD.EXE :
& cmd.exe '/C 7z x "somename.tar.gz" -so | 7z x -aoa -si -ttar -o"somename"'
使用焦油的 win32的端口。
tar -xvfz filename.tar.gz
既然你问了7-zip或类似的东西,我提供这是你的确切使用情况下写的替代工具。
在 tartool效用是使用.NET SharpZipLib库建立了一个自由和开放源码的工具。
实施例条命令来提取.tar.gz
/ .tgz
- 文件,
C:\>TarTool.exe D:\sample.tar.gz ./
声明:我该实用程序的作者
不隶属于 StackOverflow