You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell的Compress-Archive命令在压缩包中保留文件夹结构?

保留文件夹结构压缩指定EXE文件的PowerShell方案

你遇到的问题其实是Compress-Archive的默认行为导致的:当你直接指定具体的文件路径(比如.\Client\*.exe)时,它会把所有文件直接放到压缩包根目录,不会保留父文件夹结构。下面有两种简单的解决方法:

方法一:通过指定文件夹+Include参数实现

直接将Client和Server文件夹作为路径,再用-Include过滤出其中的EXE文件,这样压缩时会自动保留文件夹结构:

Compress-Archive -Path .\Client, .\Server -Include *.exe -DestinationPath ('Build_' + (Get-Date -Format yyyy.MM.dd) + '.zip')

原理:当Path参数指向文件夹时,Compress-Archive会保留该文件夹的层级,-Include *.exe则确保只打包文件夹内的EXE文件,不会包含其他类型的文件。

方法二:通过Get-ChildItem传递文件对象

先用Get-ChildItem获取目标EXE文件的对象(包含相对路径信息),再传递给Compress-Archive,同样能保留结构:

$targetFiles = Get-ChildItem -Path .\Client\*.exe, .\Server\*.exe
Compress-Archive -InputObject $targetFiles -DestinationPath ('Build_' + (Get-Date -Format yyyy.MM.dd) + '.zip')

原理:Get-ChildItem返回的FileInfo对象包含了文件的完整相对路径,Compress-Archive会根据这些路径在压缩包内重建对应的文件夹结构。

两种方法都能达到你想要的效果,推荐第一种,更简洁直接~

内容的提问来源于stack exchange,提问作者pexxxy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:48:02