gpt4 book ai didi

windows - 在 windows 中使用命令行提取 .tar.gz

转载 作者:行者123 更新时间:2023-12-05 09:19:05 25 4
gpt4 key购买 nike

我正在尝试使用命令行在 Windows 中提取 tar.gz 文件并获取进度百分比。首先,我希望在一次操作中提取它(而不是先提取 tar 然后再解压缩)。我发现只有两个工具可以做到这一点 Tartool和 7zip。Tartool 很好(也很容易发现错误)但是没有进步。 7zip 必须使用 strem in 和 out,所以我创建了一个基本的 bat 文件:

cd /d %~dp0
7z.exe x "%1" -so | 7z.exe x -aoa -si -ttar -o"%2"

提取时效果很好,但整个过程中进度仍然为 0%(我尝试从 cmd 运行),我认为这是因为流输入和输出。

我知道 winrar 即使在执行此操作(提取 tgz 文件)时也可以显示进度百分比,那么我怎样才能获得相同的结果?

最接近我的目标的是获取输出目录大小并除以 tar.gz 文件的未压缩大小(通过 7z.exe l 函数获得)。此外,进度不是线性的,它仅在提取文件时发生变化(例如,如果我的 targz 包含 2 个非常大的文件,我在提取过程中只能获得 0%、50% 和 100%)

最佳答案

很多程序员都安装了Git for Windows .它带有一个很好的 Bash 环境,其中还包含 GNU tar。使用常规的 tar 命令,您可以轻松地使用 checking progress 的选项,尤其是 --checkpoint and --checkpoint-action options .和他们一起玩,你可以用他们做一些好事,从简单的事情,比如

tar --checkpoint=1 --checkpoint-action=dot -xzf my-archive.tar.gz
tar --checkpoint=1 --checkpoint-action=echo -xzf my-archive.tar.gz

更高级的东西,比如

tar --checkpoint=1 --checkpoint-action="ttyout=Hit %s checkpoint #%u%*\r" -xzf my-archive.tar.gz
tar --checkpoint=1 --checkpoint-action=ttyout='%{%Y-%m-%d %H:%M:%S}t (%d sec): #%u, %T%*\r' -xzf my-archive.tar.gz

如果您不喜欢滚动消息但输出会在线更新 - 或者任何您喜欢的内容。您甚至可以运行任何您喜欢的 shell 命令。

关于windows - 在 windows 中使用命令行提取 .tar.gz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com