在 Windows 中,如何递归压缩文件夹但仅压缩选择性文件?

在 Windows 中,如何递归压缩文件夹但仅压缩选择性文件?

例如,我有以下目录结构:

[C:\]
+ [Documents]
  + [Work] 
    + [Presentation]
      - Presentation A.pptx
      - Presentation B.pptx
      - Presentation C.pptx
      - Presentation D.pptx
    + [Account]
      - General Ledger.xlsx
      - Additional Report.xlsx
  + [Home]
    + [Kid's School]
      - School Enrollment List.docx
      - Weekly Newsletter 1.pdf
      - Weekly Newsletter 2.pdf
      - Weekly Newsletter 3.pdf
    + [Email Attachment]
      - Stores Weekly Discount.pdf
      - Teddy's Birthday Photo.jpg

假设我只想压缩:

  • 演示文稿B.pptx
  • 附加报告.xlsx
  • 每周新闻简报 3.pdf
  • [电子邮件附件] 的整个文件夹

但我想保留文件夹结构,以便 zip 文件包含如下文件结构:

Documents\Work\Presentation\Presentation B.pptx
Documents\Work\Account\Additional Report.xlsx
Documents\Home\Kid's School\Weekly Newsletter 3.pdf
Documents\Home\Email Attachment\Stores Weekly Discount.pdf
Documents\Home\Email Attachment\Teddy's Birthday Photo.jpg

怎么做呢?到目前为止,我所做的就是压缩整个 Documents 文件夹,然后在 zip 文件内有选择地删除它。但这非常耗时,因为实际情况是文件夹层级很深,有数百个文件,而且文件大小很大。

您知道任何原生方法或任何允许我这样做的外部程序吗?我认为 Windows 资源管理器中有一个选项可以压缩文件夹,但压缩程序会在每个文件和文件夹前面显示一个带有复选框的文件夹树,以标记要包含在生成的 zip 文件中的文件和文件夹(如果有这样的程序存在)。谢谢。

答案1

7-zip应该能够使用文件列表来压缩,并且它可以使用它自己的.7z格式或常规.zip格式。

这一页描述它应该如何工作,使用@file文件列表功能:

使用列表文件

列表文件是包含一个或多个文件和/或目录的列表的文件,这些文件和/或目录由换行符分隔。7-Zip 和 IZArc 命令行实用程序都可以使用列表文件来处理文件和目录。7-Zip 默认对列表文件使用 UTF-8 编码,但如有必要,可以使用“-scs”开关在命令行中更改编码(有关更多信息,请参阅 7-zip.chm 中的命令行版本部分)。

使用列表文件压缩文件和/或目录的命令行语法:

对于 7-Zip:

7za a -tzip "C:\Your Folder\yourarchive.zip @"C:\Your Folder\yourlistfile.txt"
  • 7za – 7-Zip 命令行可执行文件。
  • a – 将文件添加到存档命令。
  • -tzip – 将存档类型设置为 zip 文件(可选,除非使用其他压缩格式)。

使用赛格威然后使用 Linux 工具,例如tar应该也可以,但这绝对是过度的,而且对于一个 zip 程序来说没有必要。有几个tar对于窗户程序,但我坚持使用 7zip。

另一个想法可能是一个单独的文件夹,仅包含链接到您想要的文件,保持原始文件夹结构。它将创建原始文件的“镜像”,这些镜像始终与其链接的原始文件相同。然后只需备份该单独文件夹中的所有文件,只要它压缩实际的链接目标文件而不仅仅是链接即可。

相关内容