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文件的路径。如果目标已存在,除非另有指定,否则将被覆盖。
Compress-Archive -Path "C:\data\documents" -DestinationPath "C:\backups\docs.zip"
此命令将文档文件夹创建为zip存档。存档保存在backups目录中。默认情况下,所有文件和子文件夹都包含在内。除非有限制,否则操作是递归的。
压缩特定文件
您可以通过提供文件的路径来压缩特定文件。可以使用通配符或单独的路径指定多个文件。目标存档将仅包含指定的那些文件。当您需要选择性备份时,这很有用。
Compress-Archive -Path "C:\data\report.docx", "C:\data\budget.xlsx" -DestinationPath "C:\backups\important.zip"
此命令创建一个只包含两个指定文件的存档。文件必须存在于提供的路径中。即使缺少其中一个文件,该存档也会被创建。
更新现有存档
可以使用-Update参数使用新文件更新现有存档。这会将文件添加到存档中,而无需重新创建它。默认情况下,重复的文件会被替换。此操作比重新创建存档更快。
Compress-Archive -Path "C:\data\presentation.pptx" -DestinationPath "C:\backups\important.zip" -Update
此命令将PowerPoint文件添加到现有存档中。如果文件已存在于存档中,则会被覆盖。原始压缩级别将保持不变。
压缩级别选项
该cmdlet通过-CompressionLevel参数支持不同的压缩级别。可用级别为Fastest(最快)、Optimal(最优)和NoCompression(无压缩)。Optimal提供最佳压缩但速度较慢。Fastest优先于压缩比的速度。
Compress-Archive -Path "C:\data\images" -DestinationPath "C:\backups\images.zip" -CompressionLevel Fastest
此命令使用最快压缩创建一个存档。这对于速度至关重要的大文件很有用。生成的存档可能比使用Optimal压缩大。
从存档中排除文件
可以使用-ExcludePattern参数排除特定文件。这接受通配符来匹配多个文件。排除发生在文件选择之后。跳过临时文件或系统文件时很有用。
Compress-Archive -Path "C:\data\*" -DestinationPath "C:\backups\data.zip" -ExcludePattern "*.tmp"
此命令存档data目录中的所有文件,但排除.tmp文件。可以指定多个模式,并用逗号分隔。默认情况下,排除是不区分大小写的。
从管道创建存档
文件路径可以直接通过管道传递给Compress-Archive。这在与其他cmdlet结合使用时很有用。仍然需要-DestinationPath参数。管道允许动态文件选择。
Get-ChildItem "C:\data\*.log" | Compress-Archive -DestinationPath "C:\backups\logs.zip"
此命令查找所有.log文件并将它们压缩到一个存档中。只包含匹配的文件。该操作保留相对于源的目录结构。
强制覆盖存档
默认情况下,Compress-Archive不会覆盖现有文件。-Force参数会覆盖此安全检查。请谨慎使用,因为它会永久替换目标文件。不会请求确认。
Compress-Archive -Path "C:\data\*" -DestinationPath "C:\backups\data.zip" -Force
此命令创建或覆盖data.zip存档。任何同名的现有存档将被替换。如果文件存在,操作将继续执行而不会发出警告。
来源
在本文中,我们介绍了PowerShell中的Compress-Archive cmdlet。
作者
列出 所有 PowerShell 教程。