如何禁用 7-Zip 对不打算压缩并添加到存档中的目录的目录扫描?

如何禁用 7-Zip 对不打算压缩并添加到存档中的目录的目录扫描?

7-Zip 是一款很棒的工具,但有时它的工作方式很奇怪。请考虑以下目录D:\dir布局:

foo   <DIR>
bar   <DIR>
baz   <DIR>
empty <DIR> -- this directory is empty by intention

现在执行以下命令时:

>D:
>cd D:\dir
>7z a -r -bb3 -mx9 -mmt -ms empty.7z empty
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04

Scanning the drive:
    0M Scan foo\bar\baz

由于某种原因,7-Zip 会扫描与压缩过程无关的目录。这与 7-Zip [64] 16.04 有关,但在更早的版本中也是如此。不确定在 Linux 上是否也能重现。

如何禁用扫描并让 7-Zip 仅递归分析指定的目录?


编辑

7-Zip 的创建者 Igor Pavlov 向我解释了7z这种情况下的工作原理。

答案1

我问的是同样的问题在官方 7-Zip 论坛上,得到了 Igor Pavlov 的回复。我想从网站上的 Igor 那里得到答案,但他似乎没有这里的账户。他建议删除开关-r,因为7z默认情况下使用递归搜索:

您的命令在所有子文件夹中搜索空文件或文件夹。
删除-r开关。

http://7-zip.org/faq.html

以下是官方常见问题解答的摘录:

为什么 -r 开关不能按预期工作?

在大多数情况下,您不需要 -r 开关。即使没有 -r 开关,7-Zip 也可以压缩子文件夹。

示例 1:
7z.exe a c:\a.7z "C:\Program Files"
完全压缩“C:\Program Files”,包括所有子文件夹。

示例 2:
7z.exe a -r c:\a.7z "C:\Program Files"
在 C:\ 的所有子文件夹中搜索并压缩“Program Files”(例如,在“C:\WINDOWS”中)。

如果您只需要压缩具有某些扩展名的文件,则可以使用 -r 开关:
7z a -r c:\a.zip c:\dir\*.txt
压缩文件夹 c:\dir\ 及其所有子文件夹中的所有 *.txt 文件。

相关内容