如何排除压缩存档中子文件夹的子文件夹

How do I exclude a subfolder of a subfolder in compress-archive

我想压缩一个包含文件的文件夹,以及包含更多文件和更多子文件夹的子文件夹。但我只想排除子文件夹的一个子文件夹。我见过许多复杂的答案,但 none 似乎真的适用于这种情况。

文件夹结构

temp/
   a/
     aa/
        aaa/
            aaaa/
                 filesinaaaa.txt
            filesinaaa.txt
        filesinaa.txt
     at.txt
   b/
     bb/
     bt.txt
   c.txt

我想排除 a/aa/aaa/ 中的所有文件,同时将生成的 zip 保留在相同的目录结构中。如果可能,请删除 zip 中包含的文件。

所以预期的结果是

temp/
  a/
     aa/
        aaa/
            aaaa/
                 filesinaaaa.txt
            filesinaaa.txt
  result.zip

在linux中就和

一样简单
cd temp
zip -rm result.zip . -x "a/aa/aaa/*"

在 powershell 中执行此操作的最简单方法是什么?

我试过的答案对子文件夹的子文件夹不起作用。

过于复杂的结果

您可以使用 7z CLI 来执行此操作,here 是解释 7z-x 选项用法的文档

显示以下选项的示例以供参考

题中解释的目录结构:

C:\Users\adam_\Desktop\temp〉dir -R
a  b  c.txt

./a:
aa  at.txt

./a/aa:
aaa  filesinaa.txt

./a/aa/aaa:
aaaa  filesinaaa.txt

./a/aa/aaa/aaaa:
filesinaaaa.txt

./b:
bb  bt.txt

./b/bb:

正在创建存档:

PS C:\Users\adam_\Desktop\temp> 7z a -tzip result.zip . -x!a/aa/aaa/*

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive:
5 folders, 4 files, 63 bytes (1 KiB)

Creating archive: result.zip

Add new data to archive: 5 folders, 4 files, 63 bytes (1 KiB)


Files read from disk: 4
Archive size: 1217 bytes (2 KiB)
Everything is Ok

结果存档详细信息:

PS C:\Users\adam_\Desktop\temp> 7z l .\result.zip

7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

Scanning the drive for archives:
1 file, 1217 bytes (2 KiB)

Listing archive: .\result.zip

--
Path = .\result.zip
Type = zip
Physical Size = 1217

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2022-05-05 09:48:37 D....            0            0  a
2022-05-05 09:48:12 D....            0            0  a\aa
2022-05-05 09:47:45 D....            0            0  a\aa\aaa
2022-05-05 09:48:12 ....A           13           13  a\aa\filesinaa.txt
2022-05-05 09:48:37 ....A           13           13  a\at.txt
2022-05-05 09:49:20 D....            0            0  b
2022-05-05 09:48:58 D....            0            0  b\bb
2022-05-05 09:49:20 ....A           19           19  b\bt.txt
2022-05-05 09:49:56 ....A           18           18  c.txt
------------------- ----- ------------ ------------  ------------------------
2022-05-05 09:49:56                 63           63  4 files, 5 folders