Powershell计算文件扩展名,每个扩展名具有总文件大小

时间:2016-04-14 23:46:15

标签: file powershell size

我正在为初学者学习PowerShell课程,在寻求帮助时教师完全没用。我要做的任务是:在我的计算机上搜索以.doc,.docx,.xls或.xlsx文件扩展名结尾的文件。 将文件名和大小(按文件扩展名分组)输出到名为“File_Summary.txt”的文本文件中。输出还应以每个文件扩展名的总文件数和总文件大小结束。我到目前为止创建的代码是:

$path = ".\"
$destination = "C:\Users\StayPositibve\Desktop\pleasework1.txt"

$results = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"}  | Select-Object Name, Extension, @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length / 1Kb) }}
$results | Sort-Object -Property extension | Out-File $destination
$countFiles = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"} 
$countFiles | Group-Object -Property extension | Out-File $destination -Append

代码运行(虽然我确定它的编码很糟糕);但是,我无法弄清楚如何将每个扩展的总文件大小一起添加。我有每个扩展名的文件总数,但不是总大小。感谢任何人都能给我的帮助!

1 个答案:

答案 0 :(得分:2)

您希望使用Measure-Object作为TessellatingHeckler建议。这将做你想要完成的事情:

$path = ".\"
$destination = "C:\Users\StayPositibve\Desktop\pleasework1.txt"

$results = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"}  | Select-Object Name, Extension, @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length / 1Kb) }}
$results | Sort-Object -Property extension | Out-File $destination
$results|group extension|select Count,Name,@{l='Total KB';e={$_.Group | Measure-Object -Property kbytes -Sum|select -expand sum}}| Out-File $destination -Append

我重复使用$results,并按照您的方式进行分组,但后来我使用Select添加了一个新属性,其中每个分组的总大小为Measure-Object管道Select -Expand Sum