时不时地,我会收到一个 6 GB .zip 数据存档的下载链接,我想要:
下载
解压
用7z重新压缩,输入密码
我想避免在每个步骤中使用临时文件,因为它会在我的 SSD 上使用约 18 GB 的写入操作,而最后只需要 6 GB。
在 Linux 上,它可能wget ... | unzip ... | 7z ...
与管道一起使用。
如何在 Windows 上执行此操作?
注意:这个问题链接到Make 7-Zip extract an archive directly to a directory但不重复,因为链接的问题仅涵盖问题的“7z temp”部分,而我说的是下载+解压缩+ 7z链。
此外,我正在寻找一个命令行解决方案,而不是像Make 7-Zip 这样的拖放式 GUI 解决方案,将档案直接提取到目录中。
以下命令行解决方案避免了用于解压/压缩的临时文件,并且适用于 Windows。它使用
-so
和-si
标准输出/标准输入标志7z
。请注意,我的原始存档中只有 1 个匹配
*.mbox
项,因此只有一个文件需要解压缩/压缩。正如@DanielB 在他的评论中指出的那样,如果有多个文件,它会更复杂:
最后,将原始 ZIP 的下载直接传送到管道
7z e
是不可能的,因为 ZIP 文件无法进行流解压缩:它们通常在文件末尾有一个索引,因此在开始解压缩之前需要先下载整个文件。为此,我们可以
X:\
使用 OSFMount 快速创建一个 RAM 磁盘: