计算这些子文件夹中的子文件夹和 .exe 文件的数量

Count the numbers of subfolders and .exe files inside those subfolders

抱歉这么长 post,尽量详细。

我的文件夹结构如下所示:

C:\file.exe

我想要完成的是计算文件夹 6 中存在的文件夹数量,然后按创建时间对它们进行分组。我也在尝试计算 file.exe 在这些文件夹中存在的实例数。

例如,文件夹 C: 包含以下子文件夹,这些子文件夹是在如下所示的时间创建的::

a 12:00 AM
b 12:00 AM
c 1:00 AM
d 1:00 AM
e 2:00 AM
...

在这些文件夹中,ab 包含 file.exe

我的预期输出应该是:

Time     Count Hit
----     ----- ---
12:00 AM     2   2
1:00 AM      2   0
2:00 AM      1   0

Time表示文件夹的时间,Count是当时创建的文件夹数,Hitfile.exe在文件夹中的实例数C:\当时创建的文件夹路径。

再举一个例子,在 12:00 AM,创建了 2 个文件夹,并且在这两个文件夹中有子文件夹包含 2file.exe 的实例。有道理吗?

我在计算 file.exe 的实例时遇到问题。 当我 运行 我的脚本时,它确实对文件夹进行了分组,并给我创建的时间和当时的数量,但它没有给我 file.exe 的实例数,我不是确定我做错了什么。这是我使用的代码:

Get-ChildItem "C:" | `
        Sort-Object -Property LastWriteTime | `
        Select-Object @{Name = "Date"; Expression = { $_.LastWriteTime.ToString('h:mm tt') }}, `
        @{Name = "Hit"; Expression = { (Get-ChildItem "C:" -Recurse -Filter "*.png").Count}} | `
        Group-Object Date | Select-Object @{Name = "Time"; Expression = { $_.Name }} , Count, Hit

我得到的是

Time     Count Hit
----     ----- ---
12:00 AM     2   
1:00 AM      2   
2:00 AM      1   

有什么想法吗?如果您需要更多说明,请告诉我!

Group-Object 仅输出具有成员 NameCountGroup 的对象。要访问通过管道传输到 Group-Object 的 cmdlet 输出的属性(指定为 Group-Object) 参数的 属性 除外,您需要访问 Group 属性 ,这是所有分组对象的数组。因此您需要为 Hit.

计算另一个 属性

试试这个:

Get-ChildItem "C:" -Directory |
    Sort-Object -Property LastWriteTime |
    Select-Object @{Name = "Date"; Expression = { $_.LastWriteTime.ToString('h:mm tt') }},
                  @{Name = "Hit"; Expression = { ($_ | Get-ChildItem -Recurse -File -Filter "*.png").Count}} |
    Group-Object Date | 
    Select-Object @{Name = "Time"; Expression = { $_.Name }}, Count, 
                  @{Name = "Hit"; Expression = { ($_.Group | Measure-Object -Property Hit -sum).sum }}

表达式计算 Group 数组所有元素的 hit 属性 之和。

另一个问题是您对两个 Get-ChildItem 调用使用相同的路径,因此您实际上是使用相同的路径多次搜索 *.png。当然,这会导致计数不正确。我通过指定 $_ 作为路径来解决这个问题,这是第一个 Get-ChildItem.

找到的文件夹

我还添加了 -Directory 到顶级 Get-ChildItem-File 到嵌套的 Get-ChildItem。可能不会对结果产生影响,但我认为它使代码更清晰。更能表达意图。