如何使用 Windows Powershell 提取嵌套文件夹中的所有 zip 文件

问题描述 投票:0回答:2

我是新手,问一个简单的问题: 我正在寻找最简单的方法来提取文件夹及其子文件夹中的所有 zip 文件。
并将它们全部放在一个特定的文件夹中。

e.g.:  
folder-A  
   file1.zip   
   folder-B  
     folder-B file2.zip
     folder-B file3.zip
   folder-C
     folder-D
       folder-D file4.zip

我发现了很多关于这个的主题,但我无法使用所提出的解决方案
我知道我可能应该使用

Get-ChildItem
将值传递给 Expand-Archive,但我没有得到我期望的结果。

我试过:

Get-ChildItem C:\Toolbase\zip_test\*zip | Expand-Archive -DestinationPath C:\Toolbase\zip_test\unzipped 

但是解压后的文件夹是空的,除非

C:\Toolbase\zip_test\test2\
里面有zip文件夹。

谢谢你的回复。

powershell zip unzip
2个回答
1
投票

你很接近......你需要使用

recurse
选项来遍历子文件夹

Get-ChildItem C:\Toolbase\zip_test\*zip -force -recurse | Expand-Archive -DestinationPath C:\Toolbase\zip_test\unzipped -force

默认情况下,

get-childitem
只会检查父目录


0
投票

Expand-Archive
命令需要一个
-Path
参数。目前你没有提供。

如果我错了请纠正我,但您想要的结果是将所有内容解压缩到不同的

-DestinationPath

C:.
└───zip_test
    ├───folder-A
    │   │   file1.zip
    │   │
    │   ├───folder-B
    │   │       file2.zip
    │   │       file3.zip
    │   │
    │   └───folder-C
    │       └───folder-D
    │               file4.zip
    │
    └───unziped

由于我们将多个

System.IO.FileInfo
传递到管道中,我们将不得不遍历每个对象,并拉出
$_ (Current Object)
完整文件路径。然后我们必须提供目标路径。

打开 PowerShell 控制台并尝试:

     Get-ChildItem -Path C:\Toolbase\zip_test\*zip -Recurse | 
        ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath C:\Toolbase\zip_test\unziped }

这将提供以下结果:

C:.
└───zip_test
    ├───folder-A
    │   │   file1.zip
    │   │
    │   ├───folder-B
    │   │       file2.zip
    │   │       file3.zip
    │   │
    │   └───folder-C
    │       └───folder-D
    │               file4.zip
    │
    └───unziped
            file1.txt
            file2.txt
            file3.txt
            file4.txt

如果你想解压同目录下的文件,你可以试试:

Get-ChildItem -Path C:\Toolbase\zip_test\*zip -Recurse | 
    ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath $_.Directory }

结果会是。

C:.
└───zip_test
    ├───folder-A
    │   │   file1.txt
    │   │   file1.zip
    │   │
    │   ├───folder-B
    │   │       file2.txt
    │   │       file2.zip
    │   │       file3.txt
    │   │       file3.zip
    │   │
    │   └───folder-C
    │       └───folder-D
    │               file4.txt
    │               file4.zip
    │
    └───unziped

如果这回答了您的问题,请更新主题,如果没有,请提供详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.