首页 > 解决方案 > 尝试查找具有相同命名文件的文件夹

问题描述

我尝试在文件夹中选择具有相同命名文件的文件夹。所有其他文件夹都应该被忽略。

例子:

文件夹结构

$RootPath
└───AD
    ├───ADGroup
    │       ADGroup.ps1
    │
    ├───ADUser
    │       ADUser.ps1
    │
    └───includes

该命令应该只收集 ADUser 和 ADGroup。

我的问题是 Where-Object,正是 Test-Path cmdlet

$Directories = Get-ChildItem -Path $RootPath -Recurse | Where-Object {$_.PsIsContainer -eq $true -and (Test-Path -Path ''$_.FullName\$_.Name\.ps1'')}

标签: powershell

解决方案


我认为这可以满足您的要求。[ grin ] 它在指定的目录树中获取匹配的文件类型,然后将文件的父目录与文件基名进行比较。

$SourceDir = $env:TEMP
$Filter = '*.ps1'

$FileList = Get-ChildItem -LiteralPath $SourceDir -Filter $Filter -File -Recurse

foreach ($FL_Item in $FileList)
    {
    if ($FL_Item.Directory.Name -eq $FL_Item.BaseName)
        {
        '{0} - parent dir & file base names are the same' -f $FL_Item.FullName
        }
        else
        {
        Write-Warning ('    {0} has different parent dir and file base names' -f $FL_Item.FullName)
        }
    }

输出 ...

C:\Temp\AlsoSameName\AlsoSameName.ps1 - parent dir & file base names are the same
WARNING:     C:\Temp\DiffName\Testing.ps1 has different parent dir and file base names
C:\Temp\SameName\SameName.ps1 - parent dir & file base names are the same

推荐阅读