使用PowerShell的Compress-Archive压缩时排除外层根文件夹
PowerShell Compress-Archive 跳过外层根目录打包方法
该需求完全可以实现,你遇到的打包自带外层根目录的问题,是直接传入文件夹路径作为-Path参数时的默认行为,只要调整输入的路径范围即可解决。
解决方案1:使用通配符匹配子内容(最简便)
直接在原文件夹路径末尾追加\*通配符,匹配MyFolder下的所有文件和子文件夹,命令如下:
Compress-Archive -Path "C:\MyFolder\*" -DestinationPath "C:\MyFolder.zip"
该命令会直接将MyFolder内部的Files、Manifests文件夹作为压缩包的根目录,完整保留原有内部层级结构,完全符合你的预期。
解决方案2:配合Get-ChildItem使用(适合需要过滤内容的场景)
如果你需要提前过滤要打包的内容(比如排除特定后缀的文件),可以先用Get-ChildItem抓取目标内容再传给Compress-Archive:
# 示例:打包MyFolder下所有内容,不需要外层根目录 Get-ChildItem -Path "C:\MyFolder" | Compress-Archive -DestinationPath "C:\MyFolder.zip"
注意事项
如果目标路径下已经存在同名的MyFolder.zip文件,需要在命令末尾追加-Force参数覆盖原有文件,否则会触发报错。
内容的提问来源于stack exchange,提问作者Raffaeu
相关产品推荐
相关产品推荐

