gpt4 book ai didi

powershell - 如何使用 Powershell 查找具有给定名称的所有空目录?

转载 作者:行者123 更新时间:2023-12-01 12:05:28 25 4
gpt4 key购买 nike

我想使用 Powershell 查找名为“信息和规范”的文件结构中的所有空目录。当这条线我以为我已经破解了

dir -Directory -recurse | Where-Object {$_.Name -eq "Information & Specification" -and (Measure-Object).count -eq 0} | Select-Object -Property Parent

开始返回结果。但是,它似乎找到了所有“信息和规范”文件夹,无论它们是否包含文件 - 如果我将计数条件从 -eq 反转为 -ne,我什么也得不到。

所以我设置了一个简单的测试层次结构,其中文件夹 A、B、C 位于顶层。 A 和 B 都包含一个名为 X 的文件夹。(我将在测试中搜索 X 而不是“信息和规范”)。文件夹 C 包含文件夹 D,D 包含一个名为 X 的文件夹。

我跑了

dir -Directory -recurse | Where-Object {$_.Name -eq "X" -and (Measure-Object).count -eq 0} | Select-Object -Property Parent

得到了

Parent
......
A
B
D

这看起来是正确的。但是当我在 B/X 文件夹中创建一个文件时,我仍然得到相同的结果,很明显我对空性的测试是错误的。我提到了 Count items in a folder with PowerShell并尝试过

dir -Directory -recurse | Where-Object {$_.Name -eq "X" -and (Get-ChildItem $_ | Measure-Object).count -eq 0} | Select-Object -Property Parent

但这会产生一条我不明白的错误信息

Get-ChildItem : Cannot find path 'C:\temp\search_test\X' because it does not exist.

谁能帮助测试空虚(或完全替代的解决方案?)

最佳答案

这使用目录的 .GetFileSystemInfos() 方法来获取任何子目录和任何文件。输出是目录全名列表。如果您想要这些对象,请删除最后的 .FullName。 [咧嘴一笑]

$TopDir = 'D:\Temp'
$DirToFind = 'Sample'

$EmptyDirList = @(
Get-ChildItem -LiteralPath $TopDir -Directory -Recurse |
Where-Object {
#[System.IO.Directory]::GetFileSystemEntries($_.FullName).Count -eq 0
$_.GetFileSystemInfos().Count -eq 0 -and
$_.Name -match $DirToFind
}
).FullName

$EmptyDirList

截断的输出...

D:\Temp\zzz - Copy\Destination\DEcho\Music\Sample Music
D:\Temp\zzz - Copy\Destination\DEcho\Pictures\Sample Pictures
D:\Temp\zzz - Copy\Destination\DEcho\Videos\Sample Videos

[*...snip...*]

D:\Temp\zzz - Copy\Users - Copy\Admin\Music\Sample Music
D:\Temp\zzz - Copy\Users - Copy\Admin\Pictures\Sample Pictures
D:\Temp\zzz - Copy\Users - Copy\Admin\Videos\Sample Videos

所有这些目录都是空的。 [咧嘴一笑]

关于powershell - 如何使用 Powershell 查找具有给定名称的所有空目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com