首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell单行大内存使用量

PowerShell单行大内存使用量
EN

Stack Overflow用户
提问于 2022-12-02 12:56:34
回答 2查看 53关注 0票数 2

我正在尝试使用下面的命令。每当我使用它时,内存的使用率就会非常高。在完成相同的任务时是否有降低内存使用率的方法?

代码语言:javascript
运行
复制
Get-ChildItem -Path "C:\" -Recurse |
  sort -descending -property length | 
  select -first 20 fullname, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}
EN

回答 2

Stack Overflow用户

发布于 2022-12-02 15:24:36

与您当前所做的工作相比,这应该非常有效,基本上它利用了班级和实现IComparableIEquatable的自定义PowerShell类。匿名函数中的逻辑确保排序集的最大为20个元素(根据需要更改$sorted.Count -lt 20,这取决于您想要多少文件作为结果),因此内存使用量应该要低得多。

代码语言:javascript
运行
复制
class SimpleFile : System.IComparable, System.IEquatable[object] {
    [string] $FullName
    [Int64] $Length
    [double] $Gigabytes

    SimpleFile([IO.FileInfo] $File) {
        $this.FullName  = $File.FullName
        $this.Length    = $File.Length
        $this.Gigabytes = [Math]::Round($File.Length / 1Gb, 2)
    }

    [int] GetHashCode() {
        return $this.FullName.GetHashCode()
    }

    [int] CompareTo([object] $That) {
        if($diff = $this.Length.CompareTo($That.Length)) {
            return $diff
        }
        return 0
    }

    [bool] Equals([object] $That) {
        return $this.FullName -eq $That.FullName
    }
}

$result = Get-ChildItem C:\ -Recurse -File -EA 0 | & {
    begin {
        $sorted = [System.Collections.Generic.SortedSet[SimpleFile]]::new()
    }
    process {
        if($sorted.Count -lt 20) {
            $null = $sorted.Add($_)
            return
        }
        if($sorted.Min.Length -lt $_.Length) {
            $null = $sorted.Remove($sorted.Min)
            $null = $sorted.Add($_)
        }
    }
    end {
        $sorted.Reverse()
    }
}
票数 2
EN

Stack Overflow用户

发布于 2022-12-02 17:00:53

这里有一个主要的cmd解决方案,运行时间为一半(对我来说是4分钟对8分钟),而且没有太多的内存。

代码语言:javascript
运行
复制
cmd /c 'dir /s c:\ | findstr /v "Directory of" | findstr /v "<DIR>" | findstr /v "<JUNCTION>" | findstr /v "Total Files Listed:" | sort.exe /+20' | select -last 20


09/13/2018  04:45 PM       362,337,255 78ec5a6bf483ef155dc2a311e526f8a5.cab
09/23/2022  02:24 PM       379,584,512 clonezilla-live-3.0.1-8-amd64.iso
09/13/2018  04:45 PM       445,038,363 8bb1cf01f3ce1952f356d0aff91dbb2f.cab
09/13/2018  04:45 PM       445,038,363 8bb1cf01f3ce1952f356d0aff91dbb2f.cab
04/13/2012  03:02 PM       481,143,404 Data1.cab
02/23/2022  12:10 PM       540,587,242 Miller_MUS171_Lecture02_v2.mp4
05/17/2017  06:27 PM       551,624,704 maple.help
09/13/2018  04:44 PM       600,753,345 a32918368eba6a062aaaaf73e3618131.cab
09/13/2018  04:44 PM       600,753,345 a32918368eba6a062aaaaf73e3618131.cab
11/10/2022  03:12 AM       641,728,512 BaseLayer.vhdx
11/10/2022  03:12 AM       641,728,512 BaseLayer.vhdx
11/09/2022  09:17 AM       687,780,220 Windows10.0-KB5019959-x64.cab
12/12/2017  01:45 PM       740,060,956 2ddf168b.msi
09/13/2018  04:45 PM       760,142,380 9722214af0ab8aa9dffb6cfdafd937b7.cab
09/13/2018  04:45 PM       760,142,380 9722214af0ab8aa9dffb6cfdafd937b7.cab
06/02/2016  03:19 PM       894,730,632 392b35b.msi
04/18/2021  03:03 PM       905,672,704 37b241d4.msi
06/13/2022  12:52 PM       905,672,704 37b241d7.msi
04/18/2021  03:03 PM       905,672,704 Stata17.msi
01/12/2018  03:06 PM     1,075,667,093 windows10.0-kb4056891-x64.msu
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74656156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档