创建一个 7-Zip,只包含指定的文件夹,不包括某些扩展名。无扫描

Amo*_*ore 5 archiving 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
Run Code Online (Sandbox Code Playgroud)

但是,这样做的作用是扫描整个 c 驱动器以查找工具(C:\tools\在上面的示例中作为目标给出)作为关键字并将它找到的任何内容添加到我的存档中。

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

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

afr*_*ier 3

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

cd /D c:\dir1\
7z a c:\archive3.zip dir2\dir3\ 
Run Code Online (Sandbox Code Playgroud)

存档 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-e:根本(或-x仅)不适用于“添加”命令。
  • -ssw:如果您认为需要此功能,您应该考虑在 VSS 快照上进行操作,以便确保您获得正在读取的文件的一致副本。如果这是与您已经测试过其行为的特定应用程序一起使用的,那么您可以忽略这一点
  • -slp:确保您已阅读帮助并了解此选项的要求和效果,并且已对其进行测试以确保它不会对您的环境产生不利影响。