在PathOne中获取PathTwo计数
问题描述:
我需要在PathOne目录下找到PathOne中的所有PathTwos;目前我可以得到所有的PathOne的使用:在PathOne中获取PathTwo计数
$path = Get-ChildItem "C:\Path\" | ?{ $_.PSIsContainer }
由于PathOne是动态的(它的名字可能是任何东西),这可以帮助我通过所有可能的路径循环。现在,PathOne可能有2个或更多文件夹,如PathTwo1,PathTwo2和PathTwo3。我需要知道动态PathOne中有多少个文件夹。最初我以为我可以在PathOne内循环,获取动态路径的名称,然后通过PathOne循环,计算所有PathTwos并返回超过1的所有内容;不幸的是,这并没有回报我所需要的。
我已经试过:
- 一个循环内的循环:造成混乱和不返回正确的结果。
- 使用
C:\Path\.\
通过跳转到下一个文件夹将获得PathOne内的文件夹的计数。
根据意见,例如:
C:\Path\PathOne1\PathTwo1
C:\Path\PathOne1\PathTwo2
C:\Path\PathOne2\PathTwo1
C:\Path\PathOne2\PathTwo2
C:\Path\PathOne2\PathTwo3
C:\Path\PathOne3\PathTwo1 # don't want because only one PathTwo
我不在乎有多少PathOnes也有,但我确实需要每一个有一个以上的PathTwos PathOne。
答
您可以通过这个命令得到期望的结果:
# Get all items on two level deep.
Get-Item C:\Path\*\* |
# Get only directories.
Where-Object PSIsContainer |
# Group them by parent.
Group-Object {$_.Parent.FullName} -NoElement |
# Choose groups with Count more then one.
Where-Object Count -gt 1 |
# Select name of parent directory
Select-Object -ExpandProperty Name
您正在寻找在任意层级的文件夹?或者只是父路径的直接子节点? “PathTwo”只是一个(部分)文件夹名称,或者它可以是部分路径(如'foo \ bar')? –
我想我明白了......但是如果你需要展示一个简单的目录结构和你期望得到的结果,它可能会有所帮助。如果您显示您当前的计数逻辑,也可以提供帮助。 – Matt
@PetSerAl谢谢;你用一块石头杀死了两只鸟,我只是想弄清楚如何跳路,但这也算得上。再次感谢。我会将其标记为答案。 – DoubleVu