念念不忘
必会回响

PowerShell统计Windows的文件夹大小

在这两年使用Windows的过程中,总是遇到一个问题就是200G的C盘空间,动不动就爆满,这还是在我把腾讯系的数据目录迁移到其他盘、所有软件能不安装在C盘就不安装的情况下发生的。印象中2015年以前,我的Windows电脑C盘才60G。最开始我都是通过联想自带的清理工具进行硬盘清理,但是很显然这样的方式不够理想,而且我也禁用了联想的服务,那么就需要手动删除。手动删除就要先统计下那些目录占用的空间比较多,根据实际情况有选择的进行删除。

定义函数

PowerShell似乎没有类似du那样的命令,但是可以通过自动函数来实现这个功能。

打开PowerShell的环境环境配置,我本地安装的是VS Code,那么就执行如下命令:

code $PROFILE

执行后,VS Code会打开一个配置文件,在最下面新增如下代码:

function Get-DirSize {
    param (
        [string]$Path = ".",
        [switch]$GB
    )

    Write-Host "正在计算目录大小,请稍候..." -ForegroundColor Cyan

    Get-ChildItem -Path $Path -Directory | ForEach-Object {
        $subFiles = Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue
        $sizeSum = ($subFiles | Measure-Object -Property Length -Sum).Sum

        # 默认显示 MB,如果指定 -GB 参数则显示 GB
        if ($GB) {
            $finalSize = [math]::Round($sizeSum / 1GB, 2)
            $unit = "GB"
        } else {
            $finalSize = [math]::Round($sizeSum / 1MB, 2)
            $unit = "MB"
        }

        [PSCustomObject]@{
            FolderName = $_.Name
            Size       = "$finalSize $unit"
            RawSize    = $sizeSum # 用于后续排序
        }
    } | Sort-Object RawSize -Descending | Select-Object FolderName, Size
}

然后保存并关闭,执行如下代码使其生效。

. $PROFILE  

或者重新打开PowerShell也可以让其生效。

统计文件大小

该函数使用方法如下:

查看当前目录: 直接输入 Get-DirSize

查看指定目录: 输入 Get-DirSize -Path "D:\Work"

以 GB 为单位显示: 输入 Get-DirSize -GB

注意,尽可能不要去扫描那些没有权限的目录,如果非要扫描,那就需要使用管理员启动PowerShell(这是我默认启动方式)。通常占用比较大的目录就是下面几个

C:\ProgramData\
C:\Users\用户\AppData\Local
C:\Users\用户\AppData\Roaming
C:\Users\用户\(如果有maven、node、docker、rustup、cargo、scoop、cursor等在这里占用也比较大)

接下来就可以根据实际情况进行统计删除了。效果如下:

 Get-DirSize
正在计算目录大小,请稍候...

FolderName                           Size
----------                           ----
Kaspersky Lab                        6890.59 MB
NVIDIA                               4536.47 MB
NVIDIA Corporation                   4189.88 MB
Microsoft                            2385.78 MB
Lenovo                               1654.15 MB
LogiOptionsPlus                      1060.71 MB
Package Cache                        686.49 MB
Battle.net                           219.41 MB
Dropbox                              105.59 MB
USOShared                            82.74 MB
Oray                                 79.04 MB
Oracle                               78.73 MB
Logishrd                             58.36 MB
Windows Master Store                 30.03 MB
A-Volute                             29.77 MB
Tobii                                26.83 MB

赞(0) 打赏
未经允许不得转载:堆上小栈 » PowerShell统计Windows的文件夹大小

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册