【发布时间】:2014-12-13 09:23:55
【问题描述】:
这是我想要做的:
- 在我的计算机上搜索以 .doc、.docx、.xls 或 .xlsx 结尾的文件
- 将文件名和大小(按文件扩展名分组)输出到名为“File_Summary.txt”的文本文件。
- 我还想要输出中列出的每个文件扩展名的总文件数和总文件大小。
我什至无法通过检查文件夹部分:
$Folder_To_Check = C:\AIU
$Report_File_Location = "File_Summary.txt"
$files= Get-Childitem -Path $Folder_To_Check-Include *doc, *docx, *xls, *xlsx $Report_File_Location
$totalfiles = ($files | Measure-Object).Count
$totalsize = ($files | Measure-Object -Sum Length).Sum
更新。这是我的代码,我根据建议做了一些更改,但我仍然是空的。
$Report_File_Location = "File_Summary.txt"
$files= Get-Childitem C:\AIU -include "*doc", "*docx", "*xls", "*xlsx"-recurse | Sort-Object | Get-Unique -asString
$files | Out-File $Report_File_Location
$totalfiles = ($files | Measure-Object).Count
$totalsize = ($files | Measure-Object -Sum Length).Sum
write-host "totalfiles: $totalfiles"
write-host "totalsize: $totalsize"
我越是关注这个问题,我认为我不应该使用Sort-Object,而是使用Group Extension -NoElement | Sort Count -Descending,这会给我每种类型的文件总数?
更新 感谢这里的人的帮助,我的代码可以正常工作。但是我遇到了一个问题,它说我的文件不存在。问题?我需要列出整个文件夹路径并使用单引号。
此代码有效:
$Folder_To_Check = 'C:\Users\Sarah\Documents\AIU'
$Report_File_Location = "File_Summary.txt"
$results = Get-ChildItem $Folder_To_Check -Include *.doc,*.docx,*.xls,*.xlsx -Recurse
$results | Group-Object extension | ForEach-Object {
[PSCustomObject]@{
Results = $_.Name
Count = $_.Count
Size = [Math]::Round(($_.Group | Measure-Object -Sum Length | Select-Object - ExpandProperty Sum) / 1MB,2)
}
} | Out-File $Report_File_Location -Append
感谢 Matt 帮助我组织我的结果非常好。感谢您帮助我学习。
【问题讨论】:
-
我的回答中的一个编辑破坏了我的代码。如果您想再试一次,我已将其恢复到正常工作状态。
标签: powershell output