powershell - 尝试查找具有相同命名文件的文件夹
问题描述
我尝试在文件夹中选择具有相同命名文件的文件夹。所有其他文件夹都应该被忽略。
例子:
文件夹结构
$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'')}
解决方案
我认为这可以满足您的要求。[ 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
推荐阅读
- spring-boot - Spring Boot + Kotlin + Gralde 项目上的 vscode
- python - 处理决策树python中的分类列
- google-bigquery - 操作表以使用一列条目来创建新列,并为每列的项目计数
- python - 烧瓶 sqlite3 显示图像
- node.js - 在另一台机器上运行通过 docker-compose 与另一个图像链接的 Docker Image 的正确方法是什么?
- javascript - 如何将字典变量设置为 for 循环内的承诺结果?
- javascript - 当我单击用户界面时,switch case 没有切换
- mysql - keycloak docker无法开始使用docker外部的外部数据库,docker内部的数据库很好
- typescript - CallableFunction.call 中的“extends keyof”变为“never”
- r - 使用绘图函数生成散点图