当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 介绍针对档案的 PowerShell 解压缩和 Zip 命令

作者:精品下载站 日期:2024-12-14 13:08:32 浏览:14 分类:玩电脑

介绍针对档案的 PowerShell 解压缩和 Zip 命令


压缩或扩展单个或多个文件是所有 PowerShell 用户都可以立即使用的宝贵技能。也许您想稍微缩小文件的大小,或者只是将文件保存在文件夹以外的一个位置。如果是这样,请让 PowerShell 通过运行命令来解压和压缩文件。

在本教程中,您将学习在 PowerShell 中压缩和解压缩文件的多种方法。

准备好?让我们开始滚动吧!

先决条件

本教程中的示例将使用 PowerShell 7.1.x。这些命令也适用于 Windows PowerShell 5.1。

使用compress-archive命令压缩文件

多年来,您一直在使用应用程序通过单击 GUI 来压缩和归档文件。但您知道您可以在 PowerShell 中执行相同的任务吗?使用压缩存档命令,您可以轻松压缩文件。

想象一下您有几个文件要发送给客户。这些文件位于计算机上的一个文件夹中,可能类似于下面的屏幕截图。本教程引用这些文件来运行命令,但您可以使用任何可用的文件。

[玩转系统] 介绍针对档案的 PowerShell 解压缩和 Zip 命令

一次压缩一个文件

在压缩单个文件之前,您需要做两件事:源和目的地。

以管理员身份打开 PowerShell,然后运行以下命令将单个文件 (widget.png) 压缩为 ZIP 文件 (archive.zip)。 -Path 参数告诉 Compress-Archive 命令要压缩的文件的位置。而 -DestinationPath 则告诉我们将文件归档到哪里。

 Compress-Archive -Path widget.png -DestinationPath archive.zip

通过用逗号分隔来一次压缩多个文件,例如压缩存档 -Path widget.png,file1.txt,manual.pdf -DestinationPath archive.zip

压缩文件夹中的所有文件

如果您已将文件整理到想要一次性压缩的文件夹中,则最好使用星号 (*) 等通配符来表示所有文件。

运行以下命令将 C:\Demo 文件夹中的所有文件 (*) 压缩并存档 (压缩存档) 到 archive.zip 文件。

Compress-Archive -Path 'C:\Demo\*' -DestinationPath archive.zip

现在也许您只想压缩相同类型的文件。如果是这样,请将通配符与要压缩的文件的扩展名结合起来。

运行以下命令将所有日志文件 (*.log) 压缩并存档到 archive.zip 文件。

Compress-Archive -Path '*.log' -DestinationPath archive.zip

定义压缩级别

在前面的示例中,您一直使用默认压缩级别(最佳)来压缩文件,但让我们介绍一下不同的压缩级别。压缩级别定义创建存档文件时应用的压缩程度。

以下是您可以选择的三个压缩级别参数:

  • 最佳(默认)- 压缩时间取决于文件的数量和大小。
  • 最快 - 最快的压缩方法,导致文件大小更大。
  • NoCompression - 保持文件大小不变。

运行以下任意命令以查看每个压缩级别的工作原理。每个命令都会将日志 (*.log) 文件压缩到 archive.zip 文件。

# Optimal (Default compression level) 
Compress-Archive -Path '*.log' -DestinationPath archive.zip
# Fastest compression level
Compress-Archive -Path '*.log' -DestinationPath archive.zip -CompressionLevel Fastest
# No compression
Compress-Archive -Path '*.log' -DestinationPath archive.zip -CompressionLevel NoCompression

将文件添加到压缩文件

现在,如果您忘记将文件添加到存档中,请不要惊慌!您可以使用 -Update 参数将文件添加到现有存档中。

运行以下命令将您的首选文件 (manual.pdf) 添加 (-Update) 到现有存档 (archive.zip)。

Compress-Archive -Update -Path 'manual.pdf' -DestinationPath archive.zip

-Update 参数告诉 Compress-Archive 命令自动用新文件覆盖现有文件。但将文件添加到存档时要小心。您不想用旧文件覆盖您的文件。

使用 Expand-Archive 命令扩展 Zip 文件

与压缩文件的方式类似,扩展存档也没有什么不同。您需要在指定源路径和目标路径时运行 Expand-Archive 命令。 Expand-Archive 命令可让您提取存档文件。

运行下面的 Expand-Archive 命令来提取 archive.zip 文件的内容。由于未指定目标路径,因此该命令在工作目录中创建目标文件夹。目标文件夹的名称与存档文件 (archive) 相同。

Expand-Archive -Path archive.zip -DestinationPath C:\Demo\Archive

添加 -Force 参数以禁止所有确认提示。

如果您对包含未以 UTF-8 格式压缩的文件的存档使用 Expand-Archive,则提取的文件名可能与源文件名不同。

通过 .NET 列出压缩文件

您所了解的前两个 cmdlet 无法让您在不先展开存档的情况下查看其内部。也许您忘记了已经压缩了哪些文件。如果是这样,提取所有内容只是为了验证您已存档的文件将是浪费时间。

查看存档的更好方法是使用 .NET ZipFile 类。作为 System.IO.Compression 命名空间的一部分,.NET ZipFile 类包含一个名为 OpenRead(String) 的方法,使您能够查看现有存档的内部情况。

运行以下命令读取 archive.zip 文件中的每个文件 (OpenRead("$pwd\archive.zip")) 并将结果分配给 $archive 变量。

# (pwd) - working/current directory
$archive = [System.IO.Compression.ZipFile]::OpenRead("$pwd\archive.zip")

现在运行以下命令,按名称列出 $archive 变量中分配的每个文件 (Select-Object -Property Name)

$archive.Entries | Select-Object -Property Name

下面,您可以看到该命令列出了 archive.zip 文件中的每个压缩文件。

[玩转系统] 介绍针对档案的 PowerShell 解压缩和 Zip 命令

如果您还希望查看每个文件的属性,请改为引用 Entries 属性。

$archive.Entries

您现在将看到存档中每个文件的属性,类似于下图。

[玩转系统] 介绍针对档案的 PowerShell 解压缩和 Zip 命令

使用 7Zip4PowerShell 模块的 Powershell 解压缩和 Zip 文件

如果不提及另一个压缩模块 7Zip4PowerShell,关于压缩和扩展 zip 存档的教程就不完整。 7Zip4PowerShell 包含一些增强的功能,可能使其成为功能丰富的选择。

例如,您之前了解过 .NET 类和方法。使用 7Zip4PowerShell 模块,列出存档文件的命令不再那么复杂。

运行下面的 Get-7Zip 命令列出 archive.zip 文件 (-ArchiveFileName .\archive.zip) 内的所有文件。

借助 7Zip4PowerShell,Compress-7Zip cmdlet 为您提供了针对不同类型存档的更多选项,例如 Tar、GZip、BZip2、SevenZip、XZ 和 Zip。

[玩转系统] 介绍针对档案的 PowerShell 解压缩和 Zip 命令

您还可以通过运行 Get-7ZipInformation 命令来查看有关存档本身的信息,如下所示:Get-7ZipInformation -ArchiveFileName archive.zip。该命令列出 archive.zip 文件的所有属性。

结论

到目前为止,您已经了解了 PowerShell 如何使用内置命令和 7Zip4PowerShell 模块解压缩和压缩文件。无论您是要缩小文件大小还是只是将多个文件作为一个文件发送过来,这一新发现的知识都会派上用场。但这就是 PowerShell 所能提供的全部吗?

与其将命令作为基本备份解决方案运行,为什么不制作一个脚本来归档文件并自动通过电子邮件发送或将它们传输到长期存储?

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯