创建仅包含指定文件夹并排除某些扩展名的 7-Zip。无需扫描

创建仅包含指定文件夹并排除某些扩展名的 7-Zip。无需扫描

我正在尝试创建一个 7-Zip 存档,该存档将压缩某个文件夹(仅指定一个!),同时排除某个文件扩展名。我想出了这个:

"PATH-TO-7Z.EXE" a archive.7z "C:\tools\" -t7z -mx=9 -mhe=on -mtc=on -sccUTF-8 -scsUTF-8 -ssc- -ssw -y -slp -r -x!*.avi

但是,它的作用是扫描整个 C 盘,查找工具(C:\tools\在上面的例子中作为目标给出)作为关键字,并将找到的任何内容添加到我的档案中。

有办法避免这种情况吗?意思是只存档,C:\tools\同时排除指定的扩展名。

我认为这与选择有关-r,但我不确定是什么。

答案1

7-Zip 根据当前目录进行搜索。这部分信息没有明确记录,但它在 Add 命令的帮助中有所暗示:

cd /D c:\dir1\
7z a c:\archive3.zip dir2\dir3\ 

档案 c:\archive3.zip 中的文件名将包含 dir2\dir3\ 前缀,但不包含 c:\dir1\ 前缀。

在启动 7-zip 之前,您需要更改当前目录,因此您的命令如下所示:

pushd "C:\Tools" & C:\Path\To\7z.exe a -r -x!*.avi archive.7z * & popd

如果愿意的话,您还可以将该字符串分成 3 行。

还值得注意的是,您的命令行中有很多不必要的选项:

  • -ssc-:Windows 系统上的默认设置
  • -t7z:仅当无法根据扩展名确定存档类型时才需要(例如,-tzip如果要创建.xpi文件则必须指定)
  • -mhe=on:您需要仔细检查,但我不认为标头加密对未加密的档案有任何作用。
  • -scsUTF-8: 默认设置
  • -sccUTF-8:仅当你想读取控制台输出(或重定向到文件)并且你确实需要 UTF-8 来实现该特定目的时才需要
  • -y:完全不能与 Add 命令一起使用(-e或者-x仅适用于 Add 命令)。
  • -ssw:如果您认为需要此功能,则应考虑在 VSS 快照上进行操作,这样您就可以确保获得正在读取的文件的一致副本。如果此功能用于您已测试其行为的特定应用程序,那么您可以忽略这一点
  • -slp:请确保您已阅读帮助并了解此选项的要求和效果,并且已对其进行测试以确保它不会对您的环境产生不利影响。

答案2

是的,-r 选项不一定能达到你的预期。现在在常见问题解答:为什么 -r 开关不能按预期工作?

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

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

示例 1:

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

示例 2:

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

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

相关内容