问题: 我希望能够一步提取 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"'

既然你问了7-zip或类似的东西,我提供这是你的确切使用情况下写的替代工具。

tartool效用是使用.NET SharpZipLib库建立了一个自由和开放源码的工具。

实施例条命令来提取.tar.gz / .tgz - 文件,

C:\>TarTool.exe D:\sample.tar.gz ./

声明:我该实用程序的作者

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top