在这两年使用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






