压缩存档,排除包含文件夹

Posted

技术标签:

【中文标题】压缩存档,排除包含文件夹【英文标题】:Compress-Archive, exclude the containing folder 【发布时间】:2021-09-15 09:32:39 【问题描述】:

我需要在PShell 中使用Compress-Archive 打包一个文件夹

我的文件夹结构如下:

|- C:\MyFolder
|--- Files
|------ Start.ps1
|------ Stop.ps1
|--- Manifests
|------ Start.xml
|------ Stop.xml

当我发出这个命令时Compress-Archive -Path "C:\MyFolder" -DestinationPath "C:\MyFolder.zip"

结果是一个 .zip,它有一个名为“MyFolder”的根文件夹,而我需要的是一个 .zip,它复制 MyFolder 的树没有将 MyFolder 作为根文件夹。这可能吗?

【问题讨论】:

【参考方案1】:

Pathparameter accepts specific file names and file names with wildcards。因此,您可以传递 "C:\MyFolder\*"(它的所有文件和子目录因此跳过根目录

,而不是将 C:\MyFolder 作为 Path 参数 Compress-Archive -Path "C:\MyFolder\*" -DestinationPath "C:\MyFolder.zip"

这也是documented here,

-路径

指定要添加到存档压缩文件的文件的一个或多个路径。指定多个路径,并包含文件 在多个位置,使用逗号分隔路径。

此参数接受通配符。允许使用通配符 您可以将目录中的所有文件添加到存档文件中。

在根目录中使用通配符会影响存档的内容:

创建一个包含根目录及其所有目录的存档 文件和子目录,在Path中指定根目录 没有通配符。例如:-Path C:\Reference

创建一个 排除根目录的存档,但压缩其所有文件和 子目录,请使用星号 (*) 通配符。例如:-路径 C:\参考*

创建仅压缩文件的存档 根目录,使用星点星 (.) 通配符。子目录 的根不包含在存档中。例如:-路径 C:\参考*.*

【讨论】:

以上是关于压缩存档,排除包含文件夹的主要内容,如果未能解决你的问题,请参考以下文章

解压缩包含多个条目的存档

从 ZIP 存档中导出文件列表而不解压缩

存档/压缩文件 python

如何在nodejs中获取文件夹大小,排除具有glob模式的某些路径?

从python中的tar存档中提取压缩的gz文件

Powershell - 展开存档并重命名文件,因为它包含无效字符