Compress-Archive是PowerShell 5.0+内置ZIP压缩命令,支持单/多路径、通配符、三级压缩级别(Optimal/Fastest/NoCompression)、强制覆盖(-Force)及中文路径,但不支持原生排除文件。
compress-archive 是 powershell 内置的压缩命令,无需安装额外工具,直接用它就能打包成 zip 文件。
基本语法和常用写法
最简形式只需指定源路径和目标 ZIP 文件路径:
Compress-Archive -Path "C:\MyFolder" -DestinationPath "C:\backup.zip"-
-Path支持单个路径、多个路径(用数组)、通配符(如"*.txt") -
-DestinationPath必须包含.zip扩展名,否则会报错 - 目标文件夹需已存在,命令不会自动创建父目录
压缩多个文件或文件夹
可以把多个项目一起压进去,用数组方式传入:
Compress-Archive -Path "file1.txt", "data.csv", "Reports\" -DestinationPath "bundle.zip"- 也可用通配符批量选中:
Compress-Archive -Path "C:\Logs\*.log" -DestinationPath "logs.zip" - 注意:通配符只匹配当前层级;要递归包含子目录内容,直接指定文件夹路径即可(默认递归)
控制压缩级别和覆盖行为
PowerShell 5.0+ 支持 -CompressionLevel 参数:
-
Fastest(最快,压缩率低)、Optimal(默认,平衡)、NoCompression(仅打包不压缩) - 例如:
Compress-Archive -Path "src\" -DestinationPath "out.zip" -CompressionLevel Optimal - 目标 ZIP 已存在时,默认会覆盖;加
-Force可显式允许覆盖(推荐加上,避免交互提示)
常见问题和避坑提示
实际使用中容易遇到这几个情况:
- 路径含空格或特殊字符?建议用引号包裹路径,尤其是变量值:
$path = "D:\My Data"; Compress-Archive -Path $path -DestinationPath "archive.zip" - 中文路径/文件名正常支持,但旧版 .NET Framework(如 Win7 默认)可能有编码问题;Win10/Win11 一般无碍
- 不能排除特定文件——Compress-Archive 不支持 exclude 过滤;如需精细控制,得先用
Get-ChildItem筛选再传给它 - 想解压?用
Expand-Archive,参数类似,方向相反


















