You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell查找同名的Zip文件与文件夹?

解决方法

要查找存储阵列中同名的Zip文件与对应的解压文件夹,你可以用以下两种PowerShell方案:

方案一:直接遍历Zip文件检查对应文件夹

这个方法逻辑直观,只扫描Zip文件,然后验证同目录下是否存在同名文件夹,输出匹配的路径对:

Get-ChildItem -Path "c:\temp\test" -Recurse -Filter "*.zip" -File | ForEach-Object {
    $targetFolder = Join-Path -Path $_.DirectoryName -ChildPath $_.BaseName
    if (Test-Path -Path $targetFolder -PathType Container) {
        [PSCustomObject]@{
            Zip文件路径 = $_.FullName
            同名文件夹路径 = $targetFolder
        }
    }
}

方案二:分组筛选同时包含Zip文件和文件夹的组合

基于你原来的代码逻辑优化,通过自定义分组键,筛选出同时存在Zip文件和同名文件夹的分组:

Get-ChildItem -Path "c:\temp\test" -Recurse | 
    Group-Object -Property @{Name = "匹配键"; Expression = { Join-Path $_.DirectoryName $_.BaseName } } |
    Where-Object { 
        $_.Group.Where({ $_.PSIsContainer }).Count -ge 1 -and 
        $_.Group.Where({ !$_.PSIsContainer -and $_.Extension -eq '.zip' }).Count -ge 1 
    } |
    Select-Object @{Name = "Zip文件路径"; Expression = { $_.Group.Where({ !$_.PSIsContainer -and $_.Extension -eq '.zip' }).FullName } },
                  @{Name = "同名文件夹路径"; Expression = { $_.Group.Where({ $_.PSIsContainer }).FullName } }

原代码问题说明

你原来的代码会把同目录下所有BaseName相同的项(包括不同类型的文件)分组,但没有筛选出同时包含Zip文件和文件夹的分组,所以可能会出现很多无关的分组(比如同名的txt和zip文件)。上述方案通过针对性筛选,只保留符合你需求的Zip文件与文件夹组合。

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:55:12