powershell - 递归确定文件夹中所有扩展的 COUNT 和 SUM

标签 powershell file-management get-childitem

我希望能够选择一个远程文件夹并递归扫描所有文件扩展名。对于发现的每个扩展名,我需要一个总数以及单个文件类型的总和。

我在这里找到了一个脚本,它使用 -include 开关适用于单个文件扩展名,但与其多次运行脚本,不如简单地运行一次并收集所有扩展名。

$hostname=hostname
$directory = "D:\foo"

$FolderItems = Get-ChildItem $directory -recurse -Include *.txt
$Measurement = $FolderItems | Measure-Object -property length -sum
$colitems = $FolderItems | measure-Object -property length -sum
"$hostname;{0:N2}" -f ($colitems.sum / 1MB) + "MB;" + $Measurement.count + " files;"

我想我需要使用 Get-ChildItem $directory | Group-Object -Property Extension 以某种方式列出扩展名,如果这有帮助的话。

理想的输出是这样的:
扩展名、大小 (MB)、计数
jpg,1.72,203
txt,0.23,105
xlsx,156.12,456

我在 Windows 7 机器上使用 Powershell v4.0 远程连接到服务器,我可以在本地运行脚本,但它只有用于 Win 2008 R2 机器的 V3.0。

有没有人有任何想法?

最佳答案

这是一种方法:

#Get all items
Get-ChildItem -Path $directory -Recurse |
#Get only files
Where-Object { !$_.PSIsContainer } |
#Group by extension
Group-Object Extension |
#Get data
Select-Object @{n="Extension";e={$_.Name -replace '^\.'}}, @{n="Size (MB)";e={[math]::Round((($_.Group | Measure-Object Length -Sum).Sum / 1MB), 2)}}, Count

Extension Size (MB) Count
--------- --------- -----
mkv          164,03     1
xlsx           0,03     3
dll            0,32     5
lnk               0     1
url               0     1
txt               0     1

关于powershell - 递归确定文件夹中所有扩展的 COUNT 和 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616634/

相关文章:

powershell - 在Powershell中,生成距离间隔的最有效方法是什么?

Python Shutil.copy2() 函数抛出 "No such file"错误

google-apps-script - 为 Google Apps Script webapp 存储资源(图标、图像等)的优雅方式

powershell - Powershell,在解析和切换目录名称字符串后重命名目录

powershell - 错误计数和$Error自动变量不一致

powershell - 两个文件:仅保留前N个字符相同的行

powershell - 将目录中的文件列表添加到数组列表

powershell - 使用 get-childItem 进行 PSRemoting 性能开销

string - 我只想使用 powershell 替换字符串的某些字符

ios - 如何获取保存在临时目录中的视频的网址