首页 > 解决方案 > 如何计算 2 个文件夹中的文件并使用 powershell 分隔每个文件夹的总数?

问题描述

我有 2 个文件夹。在这 2 个文件夹内有一些具有 3 个扩展名文件(jpg、png、gif)的文件。我想计算这两个文件夹中有多少文件并指定文件夹。

我期望我能得到这个结果

Folder1
.jpg = 12
.png = 2
.gif = 4

Folder2
.jpg = 6
.png = 4
.gif = 2

我试过了,但我只计算那些文件夹中的所有文件,不能指定文件夹。任何人都可以提供想法,非常感谢它。谢谢

$FindFolder = Get-ChildItem "D:\"
ForEach ($folder in $FindFolder)
{
    $folder
    Get-ChildItem -Name "D:\$folder" -Recurse -File  -Include *.jpg, *.png, *.gif | Measure-Object | ForEach-Object{$_.Count}
}

标签: powershell

解决方案


这应该会给你类似的东西。这个用途Group-Object,更多细节可以在这里找到Select-Object还使用计算表达式来获取它找到的文件的父文件夹。

您需要做的就是根据需要调整Get-ChildItem过滤器!

$results = Get-ChildItem D:\ -Recurse -File | Select-Object Extension, `
    @{Name="Parent"; Expression={[System.IO.Path]::GetDirectoryName($_.FullName)}}
$results | Group-Object Parent, Extension -NoElement | `
    Select-Object Count, @{Name="Extension"; Expression={($_.Name -split ',')[0]}}, `
    @{Name="Parent"; Expression={($_.Name -split ',')[1]}} | Sort-Object Count -Descending

输出:

Count Extension Parent
----- --------- ------
 2274  .pdf     D:\PDFBULK
 1509  .doc     D:\testFolder\SubFolder
  402  .msg     D:\testFolder\SubFolder
   97  .msg     D:\Marketing

推荐阅读