【问题标题】:Unzip Multiple Files into Different Directories解压多个文件到不同目录
【发布时间】:2021-02-09 02:10:20
【问题描述】:

我有多个 zip 文件。

它们被称为文件夹(1).zip、文件夹(2).zip、文件夹(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 等等?

谢谢!

【问题讨论】:

  • 奖金。无法使用 7zip...
  • zip 文件夹和新文件夹名称之间是否存在关联?意味着每个不同的具体名称?还是新名称会像 newname1、newname2、newname3?
  • 我的回答有帮助吗?

标签: windows powershell unzip


【解决方案1】:

因为您只指定了一个目标路径,所以它们都将被提取到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++)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2017-05-13
    • 1970-01-01
    • 2016-08-11
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多