You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell获取驱动器列表、查询高占用文件/文件夹并删除其内文本文件

PowerShell 磁盘高占用对象查询及文本文件清理脚本实现

驱动器列表获取

原使用的Get-WMIObject已被PowerShell官方标记为过时,推荐使用兼容性与性能更佳的Get-CimInstance实现,可按需筛选磁盘类型:

# 仅筛选本地固定磁盘(DriveType=3),如需包含移动存储、光驱等可删除Where-Object筛选条件
Get-CimInstance -ClassName Win32_LogicalDisk | Where-Object DriveType -eq 3 | Sort-Object DeviceID

高占用文件/文件夹查询

Get-ChildItem默认不返回文件夹的总占用大小,需要额外递归统计每个对象的总大小后再排序,示例代码如下(可自定义要查询的驱动器、返回的高占用对象数量):

# 配置参数
$targetDrive = "C:\" # 要查询的驱动器根路径
$topCount = 5 # 取占用最高的前N个对象

# 统计根目录下每个文件/文件夹的总大小,按占用降序排序
$highUsageItems = Get-ChildItem -Path $targetDrive -Force | ForEach-Object {
    # 计算对象总大小:文件夹递归统计所有子文件大小之和,文件直接取自身大小
    $totalSize = if ($_.PSIsContainer) {
        (Get-ChildItem -Path $_.FullName -Recurse -Force -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum
    } else {
        $_.Length
    }
    # 输出带可读大小的自定义对象
    [PSCustomObject]@{
        路径 = $_.FullName
        类型 = $_.PSIsContainer ? "文件夹" : "文件"
        总占用 = $totalSize
        占用可读 = switch ($totalSize) {
            {$_ -ge 1GB} {"{0:N2} GB" -f ($_/1GB)}
            {$_ -ge 1MB} {"{0:N2} MB" -f ($_/1MB)}
            default {"{0:N2} KB" -f ($_/1KB)}
        }
    }
} | Sort-Object 总占用 -Descending | Select-Object -First $topCount

# 输出高占用对象列表
$highUsageItems | Format-Table -AutoSize

高占用对象内文本文件删除

警告:删除操作不可逆,建议先运行注释删除命令的版本,确认要删除的文件列表无误后再开启删除逻辑

foreach ($item in $highUsageItems) {
    # 搜索对应对象下的所有txt文本文件,可自行修改Filter匹配更多文本后缀(如*.log、*.md等)
    $txtFiles = if ($item.类型 -eq "文件夹") {
        Get-ChildItem -Path $item.路径 -Recurse -Force -Filter *.txt -ErrorAction SilentlyContinue
    } else {
        # 单文件判断自身是否为txt后缀
        if ($item.路径 -like "*.txt") { Get-Item -Path $item.路径 -Force }
    }

    if ($txtFiles) {
        Write-Host "`n待删除文本文件列表:"
        $txtFiles | Select-Object FullName, Length | Format-Table -AutoSize

        # 确认无误后取消下方注释执行删除
        # $txtFiles | Remove-Item -Force -ErrorAction SilentlyContinue
    }
}

注意事项

  • 脚本需要以管理员权限运行,否则访问系统保护目录会出现权限不足的问题
  • 如需要扫描全磁盘所有文件而非仅根目录下的一级对象,可修改Get-ChildItem的参数添加-Recurse即可

内容的提问来源于stack exchange,提问作者sanya jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:36:04