将多个文件解压到不同目录

Unzip Multiple Files into Different Directories

我有多个 zip 文件。

它们被称为 folder(1).zip、folder(2).zip、folder(3).zip。使用 PowerShell,当我尝试使用此将它们全部解压缩到唯一的文件夹时...

Get-ChildItem 'c:\users\name\downloads' -Filter *.zip | Expand-Archive -DestinationPath 'c:\users\name\downloads'  -Force

我将所有文件放入一个名为“文件夹”的文件夹中。如何将 zip 文件夹解压缩到单独的文件夹中?

额外的问题,作为这个过程的一部分,有没有办法在每个文件夹出来时重命名它,这样 folder(1).zip 就变成 Name-Here, folder (2).zip 变成 Other-Name-Here, etc?

谢谢!

因为您只指定了一个目标路径,所以它们都将被提取到 c:\users\name\downloads。我想每个 zip 档案都包含一个名为“文件夹”的文件夹,所以所有档案的所有内容最终都在 c:\users\name\downloads\folder

您必须为每个存档指定不同的目标路径。不确定您的命名约定应该是什么,我使用了一个简单的计数器:

$counter = 0
Get-ChildItem 'c:\users\name\downloads' -Filter *.zip | foreach {
    $destination = Join-Path $_.DirectoryName ("YourName" + $counter++)
    Expand-Archive $_.FullName -DestinationPath $destination
}

当然我想,现在每个文件夹都会有子文件夹“文件夹”,但如果这就是档案的构建方式,那么就没有办法改变它了。如果你绝对确定所有档案有那个子文件夹,你可以这样做:

$counter = 0
Get-ChildItem 'c:\users\name\downloads' -Filter *.zip | foreach {
    # expand to the root folder first
    Expand-Archive $_.FullName -DestinationPath $_.DirectoryName
    # now rename the extracted "folder" to whatever you like
    Rename-Item (Join-Path $_.DirectoryName "folder") -NewName ("YourName" + $counter++)
}