【问题标题】:Multiple counts from Powershell Get-ChildItem?来自 Powershell Get-ChildItem 的多个计数?
【发布时间】:2013-06-06 14:28:13
【问题描述】:

如何使用 powershell 来计算文件夹下的文件数和文件夹数,模拟该文件夹的 Windows“属性”?

FAQ 表示可以交叉发布,因此可以在以下位置找到完整问题:https://superuser.com/questions/605911/multiple-counts-from-powershell-get-childitem

【问题讨论】:

    标签: powershell


    【解决方案1】:

    基本上,您需要枚举给定路径的所有文件和文件夹并维护每种对象类型的计数:

    $files=$folders=0
    $path = "d:\temp"
    
    dir $path -recurse | foreach { if($_.psiscontainer) {$folders+=1} else {$files+=1} }
    
    "'$path' contains $files files, $folders folders"
    

    【讨论】:

      【解决方案2】:

      编辑:

      经过编辑以提高效率并停止循环...

      这也可以通过使用Measure-Object cmdlet 和Get-childItem cmdlet 来完成:

      gci "C:\" -rec | Measure -property psiscontainer -max -sum | Select `
          @{Name="Path"; Expression={$directory.FullName}},
          @{Name="Files"; Expression={$_.Count - $_.Sum}},
          @{Name="Folders"; Expression={$_.Sum}}
      

      输出:

      Path                 Files           Folders
      ----                 -----           -------
      C:\Test              470             19
      

      【讨论】:

      • 这将花费两倍于上一个答案的时间,因为您调用了两次 gci 并循环遍历它返回两次的集合。如果目录结构不断变化,您可能会在两次调用之间得到不同的gci 输出。
      • @alroc 编辑后的答案现在效率更高,并且避免了循环。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多