【问题标题】:size of files based on particular extensions基于特定扩展名的文件大小
【发布时间】:2019-11-19 17:56:39
【问题描述】:

我正在尝试查找特定驱动器中在 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

【问题讨论】:

  • 您的问题到底是什么?代码的哪一部分不起作用?

标签: powershell fileserver


【解决方案1】:

可能是这样的,我不知道如何在表格中格式化:

$files = Get-ChildItem $directory -Recurse -File:$true | Where-Object {$_.LastWriteTime -gt $date} 

foreach($file in $files){
[IO.Path]::GetExtension($file)
$file.length
}

【讨论】:

    【解决方案2】:

    我希望它没有那么糟糕。 :)

    # 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"
        }
    

    【讨论】:

      【解决方案3】:

      也许试试这个。

      # directory path
      $directory = "C:\Program Files"
      
      # 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}
      
      # sort files by extension, size
      $files | Sort-Object Extension,Length | Select-Object Name,@{label = 'Length'; e = {"{0:N3} KB" -f ($_.Length / 1KB)}} | ft -AutoSize -Wrap
      

      【讨论】:

      • 好吧,我想我们已经接近了,但我不想要确切的文件名。例如,我只想显示扩展名和它们的大小。 JPEG - 2000 个文件 4 GB .DOC - 1086 个文件 - 4 GB 一样明智。
      • 我可以获得它们的总扩展名和总大小。但是,无法获取每种扩展类型的大小。
      • 试试这个:Check File Extension
      猜你喜欢
      • 2021-12-30
      • 2012-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多