有谁知道一个PowerShell 2.0命令/脚本来算的所有文件夹和子文件夹;在特定的文件夹(如用C所有子文件夹的数量:\文件夹1 \文件夹2)(递归没有文件)?
此外,我也还需要所有的“叶子” -folders的数量。 换句话说,我只想计算文件夹,没有subolders。
有谁知道一个PowerShell 2.0命令/脚本来算的所有文件夹和子文件夹;在特定的文件夹(如用C所有子文件夹的数量:\文件夹1 \文件夹2)(递归没有文件)?
此外,我也还需要所有的“叶子” -folders的数量。 换句话说,我只想计算文件夹,没有subolders。
您可以使用get-childitem -recurse
以获得在当前文件夹中的所有文件和文件夹。
管道将到Where-Object
将其过滤,仅那些容器文件。
$files = get-childitem -Path c:\temp -recurse
$folders = $files | where-object { $_.PSIsContainer }
Write-Host $folders.Count
作为一个班轮:
(get-childitem -Path c:\temp -recurse | where-object { $_.PSIsContainer }).Count
在PowerShell的3.0,你可以使用目录开关:
(Get-ChildItem -Path <path> -Directory -Recurse -Force).Count
这是一个很好的起点:
(gci -force -recurse | where-object { $_.PSIsContainer }).Count
不过,我怀疑这将包括.zip
在计数文件。 我测试和尝试发布的更新...
编辑:已经证实,zip文件不作为容器。 以上应该罚款!
为了回答你问题的第二部分,获得对夹叶数,只需修改其中宾语从句添加非递归搜索每个目录中,只得到那些返回计数0:
(dir -rec | where-object{$_.PSIsContainer -and ((dir $_.fullname | where-object{$_.PSIsContainer}).count -eq 0)}).Count
它看起来干净了一点,如果你能PowerShell中使用3.0:
(dir -rec -directory | where-object{(dir $_.fullname -directory).count -eq 0}).count
另外一个选项:
(ls -force -rec | measure -inp {$_.psiscontainer} -Sum).sum
获取有追索权的选项,它管的路径子项再次只过滤容器,管道测量项目数量
((get-childitem -Path $the_path -recurse | where-object { $_.PSIsContainer }) | measure).Count