如何使用Windows PowerShell提取嵌套文件夹中的所有Zip文件
解决PowerShell递归提取所有子文件夹Zip文件并统一解压的问题
你的命令失效的核心原因是没有递归遍历子文件夹,Get-ChildItem C:\Toolbase\zip_test\*zip仅会扫描目标目录的根层级,不会深入到folder-B、folder-D这类子文件夹里查找Zip文件。
基础解决方案(统一解压到指定文件夹)
执行以下命令即可遍历所有子文件夹的Zip文件,并将内容全部解压到目标目录:
Get-ChildItem -Path C:\Toolbase\zip_test -Filter *.zip -Recurse | ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath C:\Toolbase\zip_test\unzipped -Force }
各参数说明:
-Recurse:强制Get-ChildItem遍历目标目录下的所有子层级文件夹-Filter *.zip:精准筛选Zip格式文件,比通配符匹配更高效ForEach-Object:逐个处理每个找到的Zip文件,避免批量传递可能的异常-Force:如果目标目录存在同名文件,直接覆盖(不需要覆盖可移除该参数,冲突时会报错提示)
进阶方案(避免文件重名覆盖)
如果担心不同Zip文件内有同名文件导致覆盖,可以给每个Zip单独创建子文件夹存放解压内容:
Get-ChildItem -Path C:\Toolbase\zip_test -Filter *.zip -Recurse | ForEach-Object { # 用Zip文件名作为子文件夹名称 $destSubFolder = Join-Path -Path C:\Toolbase\zip_test\unzipped -ChildPath $_.BaseName Expand-Archive -Path $_.FullName -DestinationPath $destSubFolder -Force }
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

