ZetCode

PowerShell Compress-Archive

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍PowerShell中的Compress-Archive cmdlet。此cmdlet从文件和文件夹创建zip存档。它是在PowerShell 5.0中引入的,并且是Microsoft.PowerShell.Archive模块的一部分。

存档基础知识

存档是一个包含压缩文件和文件夹的单个文件。Compress-Archive cmdlet专门创建ZIP存档。它支持递归地从目录添加文件。此cmdlet可以更新现有存档或创建新存档。压缩有助于节省存储空间,并使文件传输更容易。

Compress-Archive 的基本用法

使用Compress-Archive的最简单方法是指定源路径和目标路径。源可以是文件或目录。目标是新zip文件的路径。如果目标已存在,除非另有指定,否则将被覆盖。

archive1.ps1
Compress-Archive -Path "C:\data\documents" -DestinationPath "C:\backups\docs.zip"

此命令将文档文件夹创建为zip存档。存档保存在backups目录中。默认情况下,所有文件和子文件夹都包含在内。除非有限制,否则操作是递归的。

压缩特定文件

您可以通过提供文件的路径来压缩特定文件。可以使用通配符或单独的路径指定多个文件。目标存档将仅包含指定的那些文件。当您需要选择性备份时,这很有用。

archive2.ps1
Compress-Archive -Path "C:\data\report.docx", "C:\data\budget.xlsx" -DestinationPath "C:\backups\important.zip"

此命令创建一个只包含两个指定文件的存档。文件必须存在于提供的路径中。即使缺少其中一个文件,该存档也会被创建。

更新现有存档

可以使用-Update参数使用新文件更新现有存档。这会将文件添加到存档中,而无需重新创建它。默认情况下,重复的文件会被替换。此操作比重新创建存档更快。

archive3.ps1
Compress-Archive -Path "C:\data\presentation.pptx" -DestinationPath "C:\backups\important.zip" -Update

此命令将PowerPoint文件添加到现有存档中。如果文件已存在于存档中,则会被覆盖。原始压缩级别将保持不变。

压缩级别选项

该cmdlet通过-CompressionLevel参数支持不同的压缩级别。可用级别为Fastest(最快)、Optimal(最优)和NoCompression(无压缩)。Optimal提供最佳压缩但速度较慢。Fastest优先于压缩比的速度。

archive4.ps1
Compress-Archive -Path "C:\data\images" -DestinationPath "C:\backups\images.zip" -CompressionLevel Fastest

此命令使用最快压缩创建一个存档。这对于速度至关重要的大文件很有用。生成的存档可能比使用Optimal压缩大。

从存档中排除文件

可以使用-ExcludePattern参数排除特定文件。这接受通配符来匹配多个文件。排除发生在文件选择之后。跳过临时文件或系统文件时很有用。

archive5.ps1
Compress-Archive -Path "C:\data\*" -DestinationPath "C:\backups\data.zip" -ExcludePattern "*.tmp"

此命令存档data目录中的所有文件,但排除.tmp文件。可以指定多个模式,并用逗号分隔。默认情况下,排除是不区分大小写的。

从管道创建存档

文件路径可以直接通过管道传递给Compress-Archive。这在与其他cmdlet结合使用时很有用。仍然需要-DestinationPath参数。管道允许动态文件选择。

archive6.ps1
Get-ChildItem "C:\data\*.log" | Compress-Archive -DestinationPath "C:\backups\logs.zip"

此命令查找所有.log文件并将它们压缩到一个存档中。只包含匹配的文件。该操作保留相对于源的目录结构。

强制覆盖存档

默认情况下,Compress-Archive不会覆盖现有文件。-Force参数会覆盖此安全检查。请谨慎使用,因为它会永久替换目标文件。不会请求确认。

archive7.ps1
Compress-Archive -Path "C:\data\*" -DestinationPath "C:\backups\data.zip" -Force

此命令创建或覆盖data.zip存档。任何同名的现有存档将被替换。如果文件存在,操作将继续执行而不会发出警告。

来源

Microsoft Compress-Archive 文档

在本文中,我们介绍了PowerShell中的Compress-Archive cmdlet。

作者

我的名字是Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。我从2007年开始撰写编程文章。迄今为止,我已撰写了1400多篇文章和8本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PowerShell 教程