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

6

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

我的文件夹结构如下:

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

当我发出这个命令 Compress-Archive -Path "C:\MyFolder" -DestinationPath "C:\MyFolder.zip" 时,结果是一个名为"MyFolder"的根文件夹的.zip文件,而我需要的是一个复制了MyFolder树形结构的.zip文件而不是以MyFolder作为根目录。这是否可能?
1个回答

13
Path参数接受特定的文件名和带通配符的文件名。因此,作为Path参数,你可以传递"C:\MyFolder\*"(它的所有文件和子目录,跳过根目录)。所以,不要传递C:\MyFolder作为Path参数。
Compress-Archive -Path "C:\MyFolder\*" -DestinationPath "C:\MyFolder.zip"

这也在这里有记录
-路径
指定要添加到压缩文件存档中的文件的路径或路径。要指定多个路径并包含多个位置的文件,请使用逗号分隔路径。
此参数接受通配符字符。通配符字符允许将目录中的所有文件添加到存档文件中。
使用通配符与根目录一起会影响存档的内容:
要创建一个包括根目录及其所有文件和子目录的存档,请在路径中指定根目录而不使用通配符。例如:-Path C:\Reference 要创建一个不包括根目录但压缩其所有文件和子目录的存档,请使用星号(*)通配符。例如:-Path C:\Reference\*
要创建一个仅压缩根目录中的文件的存档,请使用星点星(*.*)通配符。根目录的子目录不包含在存档中。例如:-Path C:\Reference\*.*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接