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

时间:2020-10-26 19:13:12

标签: windows powershell unzip

我有多个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变成这里的其他名称,等等?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于仅指定了一个目标路径,因此它们都将被提取到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++)
}