7z如何获取未压缩内容的总大小?

5

如何在完全解压缩后获取zip / rar / 7z文件内容的大小?在Windows和Linux下都适用。我考虑使用7z l文件名命令,但我不喜欢文件名干扰代码计算每个文件的大小的想法。


我不太明白你所说的“文件名干扰了代码计算每个文件大小”的意思,但如果你想使用机器可读格式,可以考虑使用 -slt 命令行选项。 - AndreKR
3个回答

6

7zip的命令行版本7z.exe可以打印文件列表和它们的大小,包括压缩和未压缩的大小。使用l标志实现这一功能。

使用以下命令:

7z.exe l path\folder.zip

您可以使用通配符来统计文件夹中所有归档文件的总数:
7z.exe l path\*.zip

值得一提的是,如果你将 7z.exe l path\*.zip 的输出重定向到一个文本文件中,那么你会在文本末尾得到一个非常有用的总结,以便你知道你的输入和输出文件大小的总和。 - Hornbydd
值得一提的是,7z命令可以通过Ubuntu和许多类似的Linux系统上的p7zip apt软件包获得,并且也能产生所描述的输出。 - Greg Kramida

1

这并不能解决你的文件名问题,但对于其他人和我自己(在cygwin中)可能已经足够了:

/cygdrive/c/Program\ Files/7-Zip/7z.exe l filename.zip | grep -e "files,.*folders" | awk '{printf $1}'

0
使用 Powershell:
'C:\Program Files\7-Zip\7z.exe' l '.\folder-with-zips\*.zip' | select-string -pattern "1 files" | Foreach {$size=[long]"$(($_ -split '\s+',4)[2])";$total+=$size};"$([math]::Round($total/1024/1024/1024,2))" + " GB"

或者如果你想实时观看所有的事情。

'C:\Program Files\7-Zip\7z.exe' l '.\folder-with-zips\*.zip' | select-string -pattern "1 files" | Foreach {$size=[long]"$(($_ -split '\s+',4)[2])";$total+=$size;"$([math]::Round($total/1024/1024/1024,2))" + " GB"}

如果您多次运行它,请不要忘记在每次运行之间重置您的“总”变量,否则它将继续累加。
Remove-variable total

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接