我正在尝试计算目录中所有子文件夹中的文件,并在列表中显示它们。
例如以下脏物:
TEST
/VOL01
file.txt
file.pic
/VOL02
/VOL0201
file.nu
/VOL020101
file.jpg
file.erp
file.gif
/VOL03
/VOL0301
file.org
应该给出作为输出:
PS> DirX C:\TEST
Directory Count
----------------------------
VOL01 2
VOL02 0
VOL02/VOL0201 1
VOL02/VOL0201/VOL020101 3
VOL03 0
VOL03/VOL0301 1
我从以下内容开始:
Function DirX($directory)
{
foreach ($file in Get-ChildItem $directory -Recurse)
{
Write-Host $file
}
}
现在我有一个问题:为什么我的函数不能递归?
这样的事情应该起作用:
dir -recurse | ?{ $_.PSIsContainer } | %{ Write-Host $_.FullName (dir $_.FullName | Measure-Object).Count }
dir -recurse
列出当前目录下的所有文件,并将结果用管道(|)传递给?{ $_.PSIsContainer }
仅过滤目录,然后再次将结果列表通过管道传输到%{ Write-Host $_.FullName (dir $_.FullName | Measure-Object).Count }
这是一个foreach循环,它对列表($ _)的每个成员显示全名和以下表达式的结果(dir $_.FullName | Measure-Object).Count
它在$ _。FullName路径下提供文件列表,并通过Measure-Object计数成员
?{ ... }
是Where-Object的别名
%{ ... }
是foreach的别名本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句