计数使用PowerShell文件夹(Counting folders with Powershell

2019-08-01 13:37发布

有谁知道一个PowerShell 2.0命令/脚本来算的所有文件夹和子文件夹;在特定的文件夹(如用C所有子文件夹的数量:\文件夹1 \文件夹2)(递归没有文件)?

此外,我也还需要所有的“叶子” -folders的数量。 换句话说,我只想计算文件夹,没有subolders。

Answer 1:

您可以使用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


Answer 2:

在PowerShell的3.0,你可以使用目录开关:

(Get-ChildItem -Path <path> -Directory -Recurse -Force).Count


Answer 3:

这是一个很好的起点:

(gci -force -recurse | where-object { $_.PSIsContainer }).Count

不过,我怀疑这将包括.zip在计数文件。 我测试和尝试发布的更新...

编辑:已经证实,zip文件作为容器。 以上应该罚款!



Answer 4:

为了回答你问题的第二部分,获得对夹叶数,只需修改其中宾语从句添加非递归搜索每个目录中,只得到那些返回计数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


Answer 5:

另外一个选项:

(ls -force -rec | measure -inp {$_.psiscontainer} -Sum).sum


Answer 6:

获取有追索权的选项,它管的路径子项再次只过滤容器,管道测量项目数量

((get-childitem -Path $the_path -recurse | where-object { $_.PSIsContainer }) | measure).Count


文章来源: Counting folders with Powershell