news 2026/8/27 21:20:00

C盘清理命令大全:用Windows自带工具安全释放磁盘空间

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C盘清理命令大全:用Windows自带工具安全释放磁盘空间

C盘红了,很多人第一反应是下载清理软件。实际最稳妥的方法是直接使用 Windows 自带的命令行工具。命令清理C盘的核心价值不是“快”,而是可控制、可复现,所有操作都能看到系统在做什么。这篇文章不推荐你放弃图形界面,也不会让你去删 System32,而是把磁盘清理、更新缓存、临时文件和回收站这些安全项串起来,整理成一条命令行脚本。整个过程不需要第三方软件,适合系统能正常进入、C盘还有少量剩余空间的普通用户。先交代一下运行环境:Windows 10 或 Windows 11,使用管理员权限打开命令行或 PowerShell,磁盘格式建议是 NTFS。下面的命令在多数这样的环境下都能跑。

1. 先弄明白:C盘空间到底被什么吃掉了

清理之前最重要的一步,不是急着输命令,而是先搞清楚 C 盘空间被哪个方向占用了。原因很简单:不同占用类型对应不同的清理命令。如果你用清理临时文件的命令去处理更新缓存,效果会非常有限。

1.1 先看空间占用,再决定删什么

先查一下当前 C 盘的剩余空间。在 PowerShell 里运行:

Get-PSDrive C | Select-Object Used,Free

输出里能看到已用空间和剩余空间,单位是字节。如果想看更直观的 GB 数,可以这样:

Get-PSDrive C | Select-Object @{N='UsedGB';E={[math]::Round($_.Used/1GB,2)}}, @{N='FreeGB';E={[math]::Round($_.Free/1GB,2)}}

如果 C 盘剩余空间已经低到个位数 GB,优先处理更新缓存、休眠文件和临时文件。这三个方向通常见效最快。我不建议一上来就全盘扫描所有目录,因为 Windows 系统目录里的文件数量非常多,全盘扫描在机械硬盘上可能要跑十几分钟,在资源已经很紧张的情况下反而容易卡住。

1.2 常见占用大户和可清理项目判断

根据我自己处理过的机器,C盘空间占用通常集中在下面这些地方:

目录或文件常见大小是否可以清理
C:\Windows\SoftwareDistribution\Download几百MB到几十GB不等可以清,Windows更新下载缓存
C:\Windows\Temp几十MB到几GB可以清,系统临时文件
用户目录下的 AppData\Local\Temp几百MB到几十GB可以清,用户临时文件
C:\Windows.old10GB 到 30GB 以上可以清,旧系统文件,需要磁盘清理工具
hiberfil.sys与内存大小相关可以关闭休眠释放,但会影响快速启动
pagefile.sys与内存大小相关不建议直接删除
System Volume Information还原点大小谨慎处理,不建议手动删除
C:\Windows\WinSxS几GB到十几GB不要直接删,只能用 Dism 清理组件存储

这里面最容易被误删的是 WinSxS 文件夹。它的体积看着很大,但里面很多是系统组件硬链接,直接删除会导致系统损坏。正确做法是使用后面的 Dism 命令清理,而不是进入目录手动删。

1.3 千万别碰的目录

有些目录无论空间多紧张,都不要直接删除或移动。如果你看到网上有人说“删除 C:\Windows\System32 释放空间”,那一定不要照做。System32、System32\drivers、Program Files、ProgramData 这些目录是系统和软件运行的基础。用户文档、桌面、下载文件夹也不应该放在自动清理脚本里,这些是个人数据。

另外,很多程序员会把开发环境临时缓存放在 AppData\Local 下,比如 npm 缓存、pip 缓存、Docker 镜像数据。清理的时候要注意区分:如果只是为了释放空间,先清理临时文件,不要一上来就把缓存目录删光,否则下次运行开发工具会重新下载,反而更慢。

我的建议是:第一次清理时,尽量不要使用“一键删除所有文件”的通配符命令,先按目录查看大小,再决定怎么处理。

2. 使用系统自带命令做安全清理

理解了空间占用方向之后,下面进入命令层面。这部分我会拆成三个命令:cleanmgr、Dism、PowerShell。它们分别处理普通垃圾、系统组件缓存和临时文件/回收站。

2.1 cleanmgr 磁盘清理:最稳妥的起点

cleanmgr 是 Windows 自带的磁盘清理工具。它的优势是能识别系统自身的可清理项,比如 Windows 更新清理、临时文件、缩略图、错误报告等。直接运行:

cleanmgr

会弹出图形界面,勾选项目后点确定。但这不是推荐用法,因为每次都要手动勾选,无法自动化。

更好的做法是先保存一份清理配置。执行:

cleanmgr /sageset:1

这时会弹出磁盘清理配置窗口,里面列出了当前系统可清理的项目。建议勾选这些安全项:

  • Windows 更新清理
  • 临时文件
  • 回收站
  • 缩略图
  • 错误报告和解决方案
  • 传递优化文件
  • DirectX 着色器缓存

不要在配置里勾选“下载”或“我的文档”,这里一旦勾选,脚本执行时可能会删除个人文件。

配置保存后,以后执行:

cleanmgr /sagerun:1

就会按照刚才保存的配置自动清理。这就是“一条命令”落地的基础。如果你直接运行 sagerun,但没有提前运行过 sageset,清理项可能不完整,所以第一次一定要先配置。

2.2 Dism 清理系统更新缓存

更新系统后,C:\Windows\SoftwareDistribution 目录里会留下旧的更新安装包。普通删除命令很难彻底清理,因为很多文件被系统服务占用。这时需要用到 Dism 的工具:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup

这个命令会清理组件存储 WinSxS 里的被替换系统组件,并压缩组件存储。它不会删除用户的个人文件,也不会影响当前系统组件。执行时间取决于系统更新历史,通常几分钟到十几分钟。

如果你还想进一步清理旧组件,可以考虑加参数:

Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

但这里要提醒:加了 ResetBase 之后,已经安装的更新无法单独卸载,因为基础组件被重置了。日常清理没必要使用,除非空间非常紧张,而且你能接受“以后不能卸载旧更新”这个限制。

2.3 PowerShell 清理临时文件和回收站

临时文件可以用 PowerShell 更精细地处理。下面的命令会清理用户临时目录和系统临时目录里修改时间超过 7 天的文件:

$cutoff = (Get-Date).AddDays(-7) $tempPaths = @("$env:TEMP", "C:\Windows\Temp", "C:\Users\*\AppData\Local\Temp") Get-ChildItem -Path $tempPaths -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue

这段代码的关键点:

  • $tempPaths指定要清理的目录,包含当前用户临时目录、系统临时目录、所有用户下的 Local\Temp。
  • -ErrorAction SilentlyContinue表示遇到正在使用的文件时跳过,不影响后续清理。
  • 只清理 7 天前的文件,是为了避免删除正在运行中的程序需要的临时文件。

回收站清理可以直接用:

Clear-RecycleBin -DriveLetter C -Force -ErrorAction SilentlyContinue

如果你只想清空 C 盘回收站,这个命令就够了。如果想清理所有盘符的回收站,可以去掉-DriveLetter参数。

3. 把命令组合成一条批处理脚本

单独执行上面的命令,已经能释放不少空间。但每次都手动敲三四条命令比较麻烦。更好的方式是写成批处理脚本,以管理员身份运行一次,就完成全部清理。

3.1 一个可直接运行的清理脚本

打开记事本,保存为clean-c.bat,注意编码建议选择 ANSI 或 UTF-8 with BOM。内容如下:

@echo off echo [1/4] Running Disk Cleanup... cleanmgr /sagerun:1 echo [2/4] Cleaning component store... Dism.exe /Online /Cleanup-Image /StartComponentCleanup echo [3/4] Cleaning temp files... powershell -NoProfile -ExecutionPolicy Bypass -Command "$cutoff=(Get-Date).AddDays(-7); $tempPaths=@('C:\Users\*\AppData\Local\Temp', $env:TEMP, 'C:\Windows\Temp'); Get-ChildItem -Path $tempPaths -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue" echo [4/4] Cleaning recycle bin... powershell -NoProfile -ExecutionPolicy Bypass -Command "Clear-RecycleBin -DriveLetter C -Force -ErrorAction SilentlyContinue" echo Finish. pause

保存后,右键选择“以管理员身份运行”。执行前请确认已经运行过一次cleanmgr /sageset:1并勾选了安全清理项,否则第一步可能只清理默认项目。

3.2 为什么这样安排执行顺序

脚本里的执行顺序不是随便排的。

先跑 cleanmgr,是因为它最安全,清理的是系统认定的临时垃圾,执行速度快。再跑 Dism,是因为 Dism 会扫描组件存储,如果前面已经清理过普通临时文件,它的扫描范围更小,时间更短。临时文件清理放在 Dism 后面,是因为 Dism 运行过程中可能产生新的临时文件,最后再清一次能把尾部垃圾带走。回收站放在最后,是因为前面几条命令如果产生新的删除项,也会进入回收站,最后统一清空更彻底。

不要同时打开多个清理工具。比如一边跑 Dism,一边跑第三方垃圾清理软件,容易造成文件锁冲突,结果就是某些项目清理不完整,还可能产生系统报错。

3.3 设置定时任务自动执行

脚本经常手动运行容易忘。如果电脑长期开机,可以设置每周自动清理一次。使用计划任务创建一条命令:

schtasks /Create /TN "C盘自动清理" /TR "C:\Tools\clean-c.bat" /SC WEEKLY /D SUNDAY /ST 03:00 /RL HIGHEST /RU SYSTEM /F

参数解释:

  • /TN是任务名称,可以自定义。
  • /TR是脚本路径,这里需要改成你实际存放脚本的位置,不要放在 C:\Windows 下,建议放在 C:\Tools 或 D 盘。
  • /SC WEEKLY /D SUNDAY /ST 03:00表示每周日凌晨 3 点执行。
  • /RL HIGHEST表示以最高权限运行。
  • /RU SYSTEM表示使用系统账户,即使没有用户登录也会执行。

创建后可以在任务计划程序里查看和修改。我一般不建议把清理频率设置为每天一次,尤其是 Dism 命令,频繁执行会增加系统组件存储的读写压力,每周一次足够。

注意:自动任务适合长期运行但确实被持续写入的机器。如果你只是偶尔感觉 C 盘空间变少,手动跑一次脚本就够了,没必要一上来就部署定时任务。

4. 进阶参数、执行边界和常见坑点

前面是基本流程。下面这部分讲一些更偏实战的情况,包括休眠文件、大文件查找,以及哪些命令不要在生产环境随手执行。

4.1 休眠文件、还原点和虚拟内存怎么处理

休眠文件 hiberfil.sys 通常会占用物理内存的 40% 到 100% 空间。如果你的电脑内存是 16GB,这个文件可能达到 6GB 到 16GB。如果你完全不用休眠功能,可以在管理员命令行里关闭:

powercfg /h off

这个命令会删除 hiberfil.sys。但它有个副作用:系统的“快速启动”也依赖休眠文件,关闭后开机速度可能会略微下降。如果你很在意开机速度,可以先保留休眠,优先清理其他项目。如果你愿意牺牲一点开机速度换取十几 GB 空间,那关闭休眠是性价比很高的选择。

系统还原点也是空间大户。不建议直接用vssadmin delete shadows命令去删,因为一旦操作范围没控制好,可能把所有还原点都删掉。更稳妥的是用磁盘清理的“系统还原和卷影复制”选项,或者留一个最近的还原点,再删除更早的。这部分操作我通常放在其他清理完成之后,因为如果系统在清理过程中出现问题,至少还能有个还原点可以恢复。

虚拟内存 pagefile.sys 不建议直接删除。虽然它是几十 GB 的大文件,但删除或强制关掉会导致系统在内存不足时无法使用页面文件。除非你清楚自己的内存压力很低,并且知道如何在系统设置中重新配置页面文件,否则不要动它。

4.2 查找大文件和大目录的常用命令

有时候你并不知道具体是哪个目录占用了空间,这时可以用 PowerShell 查找某个目录下最大的文件。下面的命令以C:\Users\用户名\AppData\Local为例,列出体积前 20 的文件:

Get-ChildItem -Path "C:\Users\你的用户名\AppData\Local" -Recurse -Force -File -ErrorAction SilentlyContinue | Sort-Object Length -Descending | Select-Object -First 20 FullName, @{N='SizeMB';E={[math]::Round($_.Length/1MB,2)}}

注意替换“你的用户名”为实际路径。这个命令在目录文件很多时也会比较慢,所以我通常先查顶层目录,比如:

Get-ChildItem -Path "C:\Users\你的用户名\AppData\Local" -Directory -Force -ErrorAction SilentlyContinue | ForEach-Object { $size = (Get-ChildItem -Path $_.FullName -Recurse -Force -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum [PSCustomObject]@{ Folder = $_.FullName; SizeGB = [math]::Round($size / 1GB, 2) } } | Sort-Object SizeGB -Descending | Select-Object -First 10

如果命令行操作不熟练,也可以借助第三方磁盘占用工具来辅助定位。工具只负责“看到哪里大”,最终删除和清理还是用系统命令,这样更安全。

4.3 不建议在生产环境随手执行的清理命令

有几类命令我建议不要在你的主力电脑上贸然执行。

第一类是直接删除 WinSxS 的命令。rd /s /q C:\Windows\WinSxS这类命令不要碰,无论它在网上被描述得多么省空间。WinSxS 里的组件很多是硬链接,直接删会导致系统文件损坏,蓝屏概率很高。

第二类是通配符全盘删除。del /f /s /q C:\Windows\*rd /s /q C:\Windows\Temp\*这类命令如果不加过滤条件,会把正在使用的临时文件或系统缓存一并删掉。删完可能当时没事,但下次系统运行到某个功能时会突然报错。

第三类是清理系统日志文件。有些教程会让你删除C:\Windows\LogsC:\Windows\Panther,这些目录在某些排错场景下确实有用,直接删掉会导致你以后遇到问题时无法定位原因。哪怕文件很大,也不要直接手动删,留给日志清理策略处理。

判断一条命令能不能执行,最简单的标准是:你是否知道它具体在删哪些文件,以及删完对系统有什么影响。如果答案含糊,那就不执行。

5. 清理完成后的验证与故障排查

命令跑完了,不代表清理成功。还需要验证空间是否真的释放,以及系统运行是否正常。

5.1 清理前后要对比哪些指标

清理前记录一下 C 盘空间:

Get-PSDrive C | Select-Object @{N='UsedGB';E={[math]::Round($_.Used/1GB,2)}}, @{N='FreeGB';E={[math]::Round($_.Free/1GB,2)}}

清理后运行同样的命令,看 FreeGB 是否增加。通常第一次清理能释放几 GB 到几十 GB,具体取决于系统多久没清理、更新缓存有多大、休眠文件是否关闭。

另外要留意系统是否正常。重启一次电脑,确认能正常进入桌面,常用软件能打开。可以打开事件查看器里的“系统”日志,看有没有大量红色错误。一般来说,只要是执行上面的安全命令,不太会出现问题。如果清理完发现某个软件异常,先检查它的缓存目录是否被误删,再考虑恢复或重装。

5.2 清理命令没反应或报错时怎么排查

先看现象,再查原因。

如果cleanmgr /sagerun:1没反应,可能是没有以管理员身份运行。右键命令行或 PowerShell,选择“以管理员身份运行”。如果之前没有执行过cleanmgr /sageset:1,也会导致 sagerun 没有可用的配置,所以先确认配置这一步已经完成。

如果 Dism 报错,常见错误码是 0x800f081f 或 0x800f0906。这类报错通常表示系统组件存储有问题。先运行:

Dism.exe /Online /Cleanup-Image /ScanHealth

扫描一下系统映像是否健康,再重新执行 StartComponentCleanup。如果仍然失败,不要强行继续,可以先运行sfc /scannow修复系统文件后再试。

如果临时文件清理过程中提示“文件正在占用”,这是正常现象,脚本里的-ErrorAction SilentlyContinue会跳过它。你不需要去结束占用进程,更不要强制删除,否则可能影响正在运行的程序。

如果批处理窗口闪退,最可能的是脚本路径错误或编码问题。建议先打开一个管理员命令行窗口,在窗口里手动运行脚本路径,例如:

C:\Tools\clean-c.bat

这样即使报错,窗口也会停在屏幕上,方便定位问题。

5.3 清理后空间又满了怎么办

清理完过几天空间又降下去,说明系统里有一个持续写入的程序。不要继续盲目清理,先找到写入来源。

常见的原因是 Windows 更新下载失败后反复下载,目录位于 C:\Windows\SoftwareDistribution\Download。你可以重置 Windows Update 客户端,方法比较复杂,更简单的做法是先停止更新服务,清理目录,再启动服务:

net stop wuauserv net stop bits rd /s /q "C:\Windows\SoftwareDistribution\Download" net start wuauserv net start bits

注意:这只清理下载缓存,不会影响已经安装的更新。

另一个常见原因是开发工具的缓存目录,例如浏览器缓存、视频会议缓存、聊天软件的文件目录。排查时可以用 PowerShell 按修改时间找最近几天写入的大文件:

Get-ChildItem -Path "C:\Users\你的用户名\AppData\Local" -Recurse -Force -File -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-3) } | Sort-Object Length -Descending | Select-Object -First 20 FullName, @{N='SizeMB';E={[math]::Round($_.Length/1MB,2)}}

如果发现某个软件的缓存持续增长,可以从软件设置里调整缓存目录,或者定期自动清理。

如果最后确实需要更多空间,再考虑调用磁盘管理工具调整分区。比如把 D 盘部分空间分给 C 盘,这类操作需要先备份数据,并且最好使用可靠的磁盘分区工具,不要在系统运行繁忙时操作。扩容有风险,建议放到清理完所有垃圾、确认系统状态正常之后再做。

把上面这套流程执行完,C 盘释放几 GB 是常见结果。但“一条命令清理 C 盘”不是终点。我更建议你把命令脚本固定下来,然后每周或每两周看一眼空间变化。很多时候 C 盘满了不是某一次垃圾太多,而是某个程序持续往系统盘写入。真正能解决问题的,不是等它满了再清理,而是找到写入来源,把缓存迁移到其他盘,或者给系统盘留出合理余量。我在实际处理中见过很多“清理后没几天又满了”的案例,最后排查下来都是微信、浏览器或更新服务在持续写入。命令能帮你解决临时文件,但解决不了持续写入。先跑单次清理,再观察一周,最后决定要不要定时执行,这才是最稳的节奏。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 21:17:13

【计算机毕业设计单片机案例】基于 STM32 的声光报警防干烧智能供水系统设计 基于 STM32 的多档位定量出水物联网终端设计(012105)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/27 21:12:18

AD/DA转换器原理、选型与PCB设计避坑指南

1. 项目缘起:从“未知引脚”到信号世界的桥梁最近在调试一个嵌入式项目时,遇到了一个让人头大的问题:系统读取到的传感器数据总是飘忽不定,时准时不准。用万用表量模拟信号是稳定的,但到了微控制器里就变成了“跳跳糖”…

作者头像 李华
网站建设 2026/8/27 21:10:00

高效与可靠—使用Python实现自动化部署与持续交付

于软件开发范畴以及运维领域当中, 自动化部署属于一个极其关键重要的环节, 它可极大幅度地提高增进部署方面的效率, 削减降低人为造成的错误, 与此同时还能增强提升整个部署进程的可控程度以及一致性。作为一种具备强大功能且便利易于学习的编程语言, 其为自动化部署给予提供了…

作者头像 李华
网站建设 2026/8/27 21:06:56

NVIDIA与AMD AI推理成本效率对比:生态、部署与本地验证

这次我们不聊某个具体模型,而是把 NVIDIA 和 AMD 放在同一个台面上,认真算一笔账:做 AI 推理、本地部署、批量任务时,两者之间的成本效率差距到底有多大?尤其是在最近大模型、ComfyUI、Ollama 这类工具越来越普及之后&…

作者头像 李华
网站建设 2026/8/27 21:04:53

Whiskey Lake-UE嵌入式主板:15年供货周期如何保障工业设备长寿命?

我做工业设备选型这些年,最怕听到的一句话不是“预算不够”,而是“这颗主控芯片停产了”。产品刚过完认证,还没来得及量产,主控芯片先宣布生命周期结束,这个滋味,我在2018年前后体会过一次。从那以后&#…

作者头像 李华
网站建设 2026/8/27 21:04:01

单片机计算机毕设之基于 STM32 的指纹密码刷卡蓝牙门锁综合系统设计 基于 STM32 的异常开锁报警智能门禁系统实现(012505)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华