仅解压更新的文件

仅解压更新的文件

有没有办法将 zip 文件解压到目录中,但只对更新文件(我的意思是 zip 中的压缩文件)执行此操作?我有一个很大的文件目录,只有大约 20% 是不同的。

最好使用命令行,但这是可选的。我使用 Windows XP。

谢谢。

答案1

随着winzip 命令行插件,您可以使用以下-n选项:

-n

仅解压较新的文件。如果存档文件较新,此选项将更新现有文件;如果文件尚不存在,则创建新文件。

wzunzip -n "c:\my documents\spring2007.zip" c:\semesters\spring05  

此示例将从 c:\my documents\spring2007.zip 中提取仅比 c:\semesters\spring05 中当前存在的文件更新的文件或 c:\semesters\spring05 文件夹中尚不存在的文件。

您可能希望将它与以下-o选项结合起来 - “在没有提示的情况下覆盖现有文件(对每个覆盖提示自动回复“是”)。”

答案2

以下是一个适合初学者的想法,其他人也需要完成:

  1. 找到一个列出压缩档案中文件的 zip 程序。
  2. 列出所有文件和时间戳
  3. 使用脚本语言(python,batch等)将这些文件的修改时间与目录中的文件进行比较
  4. 让脚本语言生成参数以将这些文件添加到档案中

或者,分解您的存档文件夹。

答案3

我来晚了 4 年,但是嘿 - 迟到总比不到好。

这是一个仅解压修改过的文件的项目: https://code.google.com/p/unzip-skip-unchanged-files/

来自 TFA:“用 C# 编写的解压工具,在解压每个文件之前检查 MD5 哈希值。 --- 如果哈希值与以前的版本匹配,我们将跳过此文件的提取。 --- 哈希值存储在 NTFS 备用文件流中(在 Linux 上,应该使用 xattr API,但这未在此处实现)”

答案4

这里提到的开源工具看起来已被废弃,我们已经构建了自己的:

https://github.com/jitbit/unzipnew

(开源、基于 .NET/Win、零依赖)

相关内容