首页 > 解决方案 > 基于特定扩展名的文件大小

问题描述

我正在尝试查找特定驱动器中在 40 天之前访问的所有文件,根据扩展名查找它们的文件类型和特定文件大小。我在 126 个文件夹中有 40000 个文件,总共有 51 种不同的扩展名(文件类型),现在我想找出什么类型的文件占用了多少空间。

有了这个,我得到了基于扩展名的文件数:

Get-ChildItem -Path X:\ -Recurse |where{-not $_.PSIsContainer} | group Extension -NoElement

有了这个,我得到了许多独特的扩展:

Get-ChildItem -Path X:\ -Recurse | Select-Object -Property Extension -Unique

Get-ChildItem -Path X:\ -Recurse |where{-not $_.PSIsContainer} | group Extension -NoElement

Get-ChildItem -Path X:\ -Recurse | Select-Object -Property Extension -Unique

标签: powershellfileserver

解决方案


我希望它不是那么糟糕。:)

# directory path
$directory = "X:\"

# date -40 days
$date = (Get-Date).AddDays(-40)

# files which are accessed before 40 days
$files = Get-ChildItem $directory -Recurse -File:$true | Where-Object {$_.LastWriteTime -gt $date} 

# file extensions
$fileExtensions = $files | Select-Object -Property Extension -Unique


    foreach ($ext in $fileExtensions){

        [int]$fileSize = $null

        foreach ($file in $files) {

            if ($file.Extension -like $ext.Extension) {

                [int]$fileSize += $file.Length / 1KB
            }
        }

        Write-Host "Extension:" $ext.Extension " - Size: "$fileSize "KB"
    }

推荐阅读