小编典典

如何在 Powershell 中解压缩文件?

all

我有一个.zip文件,需要使用 Powershell 解压缩其全部内容。我正在这样做,但它似乎不起作用:

$shell = New-Object -ComObject shell.application
$zip = $shell.NameSpace("C:\a.zip")
MkDir("C:\a")
foreach ($item in $zip.items()) {
  $shell.Namespace("C:\a").CopyHere($item)
}

怎么了?目录C:\a仍然是空的。


阅读 134

收藏
2022-05-10

共1个答案

小编典典

这是使用System.IO.Compression.ZipFile中的ExtractToDirectory的简单方法:

Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
    param([string]$zipfile, [string]$outpath)

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}

Unzip "C:\a.zip" "C:\a"

请注意,如果目标文件夹不存在,ExtractToDirectory 将创建它。其他注意事项:

  • 现有文件不会被覆盖,而是会触发 IOException。
  • 此方法至少需要 .NET Framework 4.5,适用于 Windows Vista 和更新版本。
  • 不根据当前工作目录解析相对路径
2022-05-10