C盘红了这件事,我遇到过太多次。每到这时候,很多人第一反应是装个清理软件,点一下"深度清理",看着进度条跑完,好像干净了,结果第二天又红了。为什么?因为清理工具删的都是能被安全删除的缓存,而真正把C盘撑爆的,往往是那些既不能乱删、又一直在膨胀的软件数据——它们几乎都集中在AppData这个文件夹里。
如果你是Windows用户,C盘是SSD,装软件习惯一路Next,那么这篇文章大概率对你有用。我会从AppData的目录结构和原理讲起,再手把手带你完成一次完整的"AppData搬家":把AppData从C盘迁到D盘,用目录联接(Junction)骗过系统,让所有软件都察觉不到路径变了。这个方法我实测过很多次,释放40-60GB空间很常见。整个过程只需要两条核心命令:robocopy负责复制,mklink负责"偷梁换柱"。如果你已经试过各种清理软件都不见效,这篇可以帮你彻底解决问题,而不是每次清完几天又满。
1. C盘爆满的元凶:AppData到底是什么,为什么它只增不减
1.1 Local、LocalLow、Roaming三兄弟的分工
AppData在C盘的路径是C:\Users\你的用户名\AppData,默认隐藏。你要在文件资源管理器里打开"查看"选项卡,勾选"隐藏的项目"才能看到它。很多人第一次发现自己C盘空间被AppData吞噬,都是从这里开始的。
这个文件夹之所以特殊,是因为Windows把它设计成"用户专属数据仓库",所有装在你账户下的软件,都可以往这里写配置、写缓存、写临时文件。系统按权限和用途把它分成了三个子目录,分别叫Local、LocalLow、Roaming。我拆开来讲:
| 子目录 | 用途 | 典型内容 | 迁移优先级 |
|---|---|---|---|
| Local | 本机数据,不跟随账户漫游 | 缓存、临时文件、大型软件数据 | 高 |
| LocalLow | 低完整性级别进程的数据 | IE插件、沙盒运行软件的配置 | 低 |
| Roaming | 可漫游的配置数据 | 软件设置、登录状态、聊天记录 | 高 |
简单理解:Local和Roaming是"大户",LocalLow通常很小。Local放的是"这台机器上有价值但不跟着账户走"的数据,比如剪映的缓存、NVIDIA的着色器缓存;Roaming放的是"就算换一台电脑也希望能同步过来"的配置,比如微信的登录信息、浏览器的书签和密码。很多软件开发者没精力做精细分类,直接把一大堆东西扔进Local或Roaming,所以你经常会看到某个软件的文件夹在AppData里占了几个GB。
这里需要提醒一句:AppData里确实有垃圾,但它不等于垃圾。它的作用是"软件运行必需的私有数据存储区"。删错了,轻则软件需要重新登录,重则聊天记录、项目草稿直接没。
1.2 常见软件都在往里塞什么
我在帮别人清理C盘时,经常能看到热搜词里那些路径:
C:\Users\用户名\AppData\Local\JianyingPro:剪映的用户数据和缓存。剪映的草稿如果设置了自动备份,缓存会非常夸张,十几GB是家常便饭。C:\Users\用户名\AppData\Local\NVIDIA\DXCache:NVIDIA的DirectX着色器缓存。游戏换版本、显卡驱动更新都会重新生成,时间长了也能到好几GB。C:\Users\用户名\AppData\Local\微信开发者工具\User Data:微信开发者工具的小程序项目编译缓存和用户数据。C:\Users\用户名\AppData\Local\Packages:Windows商店应用(UWP)的数据目录,装过游戏或商店应用的话这里也会变大。C:\Users\用户名\AppData\Local\Temp:系统临时文件目录。应用安装包解压、系统更新补丁、各种残留都会堆在这里。C:\Users\用户名\AppData\Local\Microsoft\Windows\Cursors:鼠标指针文件,这个一般很小,但偶尔会有人发现路径里带AppData就以为是异常。
这些软件之所以把数据往AppData塞,是因为Windows给开发者提供了一个标准API来定位"当前用户的本地应用数据目录"。对开发者来说最简单,但对用户来说最坑——你装软件时改安装路径只能改"程序本体"放哪,数据目录很多软件默认就写死在AppData,界面上又不给你改。这就是C盘持续变小的真正原因。
1.3 为什么不能把AppData当成普通垃圾文件夹
网上流传着各种"AppData可以删"的说法,我劝你别信。你可以删的是AppData里明确能重建的缓存子目录,比如Temp、DXCache,但AppData整个文件夹绝不能直接删。删掉后,你本机所有软件的配置会全部丢失,很多软件第一次启动时会自动重建一个空的AppData目录,然后你就发现微信要重新扫码登录、浏览器要重新同步、输入法词库全空了。
所以正确的思路不是"删",而是"搬"。既然AppData的路径本身是死的,但数据本身是活的,那我们就把它的物理存储位置挪到D盘,再在原来的C盘位置留一个"指路牌"(目录联接),让系统里所有软件继续访问原路径时,实际读取的是D盘的数据。这就是下面要说的核心方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 搬家前的三件事:先清理、再判断、搞清楚为什么不能直接剪切
2.1 第一刀先瘦身:Temp、DXCache、缩略图缓存怎么安全清理
在搬家之前,我强烈建议先给AppData做一次"减法"。因为如果你AppData已经有60GB,直接复制60GB到D盘又慢又占空间,不如先把明显没用的缓存清掉,让复制量小一点。
第一步,关闭所有正在运行的软件。打开任务管理器(Ctrl+Shift+Esc),把所有能看到的浏览器、微信、剪映、开发者工具都退出,减少文件占用。
第二步,清理用户临时目录。按Win+R输入%temp%回车,全选(Ctrl+A)后删除里面的文件。提示"正在使用"的可以跳过,不影响。注意别进错目录,%temp%是用户自己的临时目录,不是C:\Windows\Temp。
第三步,用系统自带的磁盘清理。在C盘驱动器上右键→属性→磁盘清理,然后点"清理系统文件"。这里会扫描出Windows更新清理、临时文件、缩略图、回收站等。我建议把能勾的项目全勾上,特别是"Windows更新清理"和"临时文件"。
第四步,清理DXCache。直接打开C:\Users\用户名\AppData\Local\NVIDIA\DXCache,全选删除里面的文件。删除后,下一次运行游戏或图形软件时会重新编译着色器,第一次启动可能稍微慢一点,但完全无副作用。
这几个操作加起来通常能清出好几个GB。清完之后,再去看AppData的属性,你会发现体积明显小了一圈。注意,不要为了追求"清理效果"去删C:\Windows\Prefetch,那是系统预读取目录,删除后只会让启动变慢,不会释放多少空间。
2.2 迁移决策:哪些子目录值得搬,哪些留在原地更安全
清理完之后,就要决定搬哪些了。按照我的经验,优先级排序是这样的:
Local:最应该搬。它体积通常最大,而且里面很多大数据是缓存,搬走之后软件照常运行。Roaming:也应该搬。它存放配置和登录状态,体积虽然不一定大,但往往是软件反复读取的地方。搬走后只要Junction建好,系统会按原路径访问,完全无感。LocalLow:可搬可不搬。它太小了,搬不搬影响不大。如果你追求"一步到位",整体三个一起搬就行。
这里需要想清楚一个关键点:搬走的不是"某个文件",而是"整个目录的物理位置"。所以无论是Local还是Roaming,整个过程对软件来说是透明的——软件永远访问C:\Users\用户名\AppData\Local,只是系统把这个路径"重定向"到了D盘。因此,不存在"哪些文件能搬哪些不能搬"的粒度问题,真正的风险只在于"你建Junction之前有没有把数据复制完整"。
不过有一个例外值得单独说。有些安装时自带"数据目录设置"的软件,比如微信的聊天记录保存位置、微信开发者工具的用户数据目录、浏览器下载目录,这些软件官方就支持改路径,你可以优先用软件内置设置改到D盘,而不是依赖全局Junction。这样即使以后Junction出问题,这些大体积数据也已经独立出来了,更稳。两类方案可以并用:官方设置能改的先改,改不了的、懒得改的交给Junction统一兜底。
2.3 为什么不能直接把AppData拖去D盘
很多人试过在文件资源管理器里直接剪切AppData到D盘,结果就是一堆报错。这里面有两个根本原因。
第一,路径依赖。Windows里的软件在安装时就拿到了默认路径C:\Users\用户名\AppData\...,很多软件把这个路径直接硬编码在配置里,或者每次启动时都按照这个固定路径去找数据。你直接剪切走,原路径就不存在了,软件启动时找不到配置,就会创建新的空白目录,表现成"设置丢失""需要重新登录"甚至直接崩溃。
你可能会问:桌面的"文档"、"下载"这类文件夹也可以在属性里改"位置"到D盘啊,为什么AppData不行?因为那些属于系统已知文件夹(Known Folders),Windows对它们做了专门的路径重定向支持,而AppData虽然也属于Known Folder,但大量第三方软件并不通过系统API读取它的位置,而是直接写死路径。所以注册表改AppData路径的方案非常容易翻车,我用了很多年,最稳的还是Junction。
第二,文件占用。AppData里有大量文件被正在运行的进程锁定。你在资源管理器里剪切时,系统要同时删除原文件,只要有一个文件被占用,Windows就会弹出"操作无法完成"。这还不是最尴尬的,更尴尬的是剪切到一半失败,原文件已经被删了一部分,目录结构处于"半残废"状态。
那Junction的方案为什么能绕开这两个问题?因为Junction本质上是一个"目录联接点"。它不移动文件的访问方式,而是像一个快捷方式一样,告诉系统"这个路径下的内容实际存储在另一个地方"。对软件来说,访问的路径没有变;对系统来说,D盘上才是真实数据,C盘路径只是入口。这样一来,路径依赖和文件占用的问题都被绕开了——唯一要做的就是在替换的那一刻保证原目录没有正在被写入。
3. 完整操作流程:robocopy复制 + mklink目录联接,AppData安全搬家
3.1 准备工作:关闭软件、备份计划、目标盘空间确认
操作开始前,先把三件事确认好。
第一,目标盘有足够空间。打开D盘属性,确认剩余空间至少是AppData当前体积的1.2倍。别在搬家搬到一半的时候D盘满了,那会非常尴尬。如果D盘空间不够,先执行第2.1节的清理,或者先清理D盘自身的冗余文件。
第二,做好备份方案。虽然robocopy保留权限和属性,理论上很安全,但保险起见,我建议你至少知道微信和浏览器的重要数据在哪。微信的聊天记录一般在C:\Users\用户名\Documents\WeChat Files或Roaming下的相关目录,浏览器书签可以先用浏览器自带同步功能备份一下。如果整机数据特别重要,可以考虑用DiskGenius之类的工具做一次分区镜像,但这有点重,大多数人不需要。
第三,关闭所有能关的软件。浏览器、微信、QQ、剪映、Steam、各种开发工具全部退出,最好把右下角托盘图标也右键退出,而不是只关窗口。这一步很重要,很多后台进程会持续往AppData写入数据,影响第二遍增量同步的一致性。
完成之后,按Win+R输入cmd,以管理员身份打开命令提示符。接下来核心操作都在这个窗口里完成。
3.2 第一遍全量复制与第二遍增量同步
先在C盘根目录确认当前用户的实际路径。如果用户名叫"sun",那路径就是C:\Users\sun\AppData。下面我用<用户名>做占位符,实际操作时必须替换成你电脑里的真实文件夹名。
第一遍复制,用robocopy全量拷贝:
cmd复制robocopy "C:\Users\<用户名>\AppData" "D:\AppData" /E /COPYALL /DCOPY:DAT /R:1 /W:1 /XJ
我来解释一下这些参数为什么这么写:
/E:复制所有子目录,包括空目录。AppData里有许多空的目录结构,软件启动时会检查它们是否存在,缺了会报错。/COPYALL:复制所有文件信息,包括数据、属性、时间戳、安全信息(ACL)。这一步特别重要,因为从C盘搬到D盘,文件的所有者和权限设置必须保持一致,否则恢复时软件会提示没有权限读取配置。/DCOPY:DAT:复制目录本身的属性时间戳。/R:1 /W:1:文件占用导致复制失败时,重试1次、等待1秒。默认是重试100万次,如果某个文件一直被占用,会让进度卡死,所以必须限制重试次数。/XJ:排除符号链接和目录联接点,防止复制过程中遇到环路。
第一遍耗时取决于AppData大小。30GB大概需要几分钟到十几分钟。复制过程中你会发现有些文件提示"共享冲突"或"访问被拒绝",这很正常,第一遍的容忍度就在这里——因为第一遍的目标是"尽可能多地把文件复制过去",而不是"精确镜像"。
第一遍跑完后,关闭所有软件(如果刚才还有漏掉的),注销一次Windows再重新登录。登录后别打开任何应用,立刻打开cmd,跑第二遍增量同步:
cmd复制robocopy "C:\Users\<用户名>\AppData" "D:\AppData" /E /MIR /COPYALL /DCOPY:DAT /R:1 /W:1 /XJ
这次加了/MIR参数,意思是"镜像模式":它会检查C盘源目录和D盘目标目录的差异,把第一次复制之后新增或修改的文件同步过去,同时把目标里源目录已经不存在的文件删除。这样确保D盘的AppData和C盘的AppData在结构上完全一致。
第二遍通常很快,几秒到几分钟。跑完后,把cmd窗口留着,下一步操作紧接着做。
3.3 重命名原目录的两种姿势
现在,C盘的AppData已经被完整复制到了D盘。接下来的关键操作是:把C盘的AppData改名为AppData_backup,然后在原位创建Junction。
先试正常模式。在cmd里执行:
cmd复制ren "C:\Users\<用户名>\AppData" "AppData_backup"
如果你成功看到光标回到下一行,说明改名成功。但很多情况下,即使你关了应用、注销又登录,仍然会有系统级服务在占用AppData,改名会提示"另一个程序正在使用此文件"。这时候不要慌,用第二种办法。
第二种办法是利用任务计划程序在系统启动早期执行。先建一个bat脚本,内容如下:
bat复制@echo off
if exist "C:\Users\<用户名>\AppData" (
ren "C:\Users\<用户名>\AppData" "AppData_backup"
mklink /J "C:\Users\<用户名>\AppData" "D:\AppData"
)
del "%~f0"
重点解释一下这个脚本的逻辑:首先判断原AppData是否还存在(如果已经改名过就跳过),然后重命名,再创建目录联接。最后一行del "%~f0"是删除脚本自身,因为任务计划启动时这个脚本是一次性的,跑完就删,不留下垃圾。
然后用Win+R输入taskschd.msc打开任务计划程序,创建一个新任务:触发器选"计算机启动时",操作选"启动程序",程序路径填这个bat文件的完整路径,并勾选"使用最高权限运行"。创建好后,重启电脑。系统会在你登录之前执行这个脚本,等桌面出现时,AppData已经变成了指向D盘的Junction。
这个方法是我实测下来成功率最高的。如果你第一次遇到"文件占用改名失败",别灰心,用任务计划基本都能绕过。但前提是你已经确认D盘的D:\AppData数据完整——所以第二遍增量同步一定不要跳过。
3.4 创建目录联接并验证:三步确认迁移成功
如果你在正常模式下已经成功改名,那就直接在cmd里执行:
cmd复制mklink /J "C:\Users\<用户名>\AppData" "D:\AppData"
注意是/J,不是/D。/J创建的是目录联接(Junction),它不需要管理员权限也能创建,而且在旧版Windows上兼容性更好;/D创建的是符号链接(Symbolic Link),功能相似但需要管理员权限,对AppData这种场景没有额外优势。所以我这里统一用/J。
创建完成后,按下面三步验证:
- 在cmd里执行
dir "C:\Users\<用户名>",你应该能看到一行AppData [D:\AppData],或者显示为<JUNCTION>。只要看到这行,就说明Junction生效了。 - 打开文件资源管理器,进入C盘的AppData,你看到的内容应该和D盘里的完全一样,而且在地址栏显示的仍然是
C:\Users\用户名\AppData。 - 重启电脑,正常打开微信、浏览器、剪映、开发者工具,确认登录状态和缓存都能正常读取。同时去C盘属性看一眼可用空间,应该已经比搬家前多了几十GB。
验证没问题后,删除备份目录C:\Users\<用户名>\AppData_backup。这个目录里存放的是C盘原有的AppData数据,此时已经被D盘完全接管,没有保留价值。但删除时可能会因为某些残留进程占用而失败,这时候注销再登录,或者重启后再删。如果重启后还是无法删除,可以用cmd进入该目录逐层删除,或者临时停掉占用它的进程,但我见过的情况里,注销一次基本都能删干净。
这里必须强调一个重要区别:删除AppData_backup是删除真实目录,用资源管理器右键删除没问题;但如果你在某个教程里看到"删除C盘AppData",要格外小心。当你当前C盘AppData是一个Junction时,你右键删除它,删除的是整个Junction指向的D盘数据。Junction本身没有"链接和内容"的二级确认,误删就是真的没了。所以如果你将来要清理C盘AppData,应该用rd "C:\Users\<用户名>\AppData"命令,它会只删除链接本身而不动D盘数据。
4. 迁移后的踩坑修复与C盘空间的长久维护
4.1 Edge数据目录报错、软件白屏、配置丢失:常见症状与修复思路
搬家结束后,大多数人会一切正常,但也有少数人会遇到一些坑。最典型的一个,就是热搜词里的那个报错:"Microsoft Edge 无法读取和写入其数据目录: C:\Users\sun\AppData\Local\com.ccswitch.desktop\ebwebview"。
这个报错的原因通常是权限问题,而不是Junction建错了。因为robocopy虽然用/COPYALL保留了权限,但如果你在使用过程中手动修改过D盘目录的安全属性,或者Junction指向不对,Edge这类对数据和权限敏感的软件就会拒绝启动。修复思路分三步:
- 确认Junction指向正确:cmd执行
dir "C:\Users\<用户名>\AppData",确认显示的是D:\AppData。 - 检查D盘和AppData目录的权限:右键
D:\AppData→属性→安全,确认当前用户有"完全控制"权限。 - 用icacls命令强制重置权限:
cmd复制icacls "C:\Users\<用户名>\AppData" /grant "<用户名>:(OI)(CI)F" /T
这个命令会把AppData目录及其所有子目录和文件的所有者权限,重置为当前用户完全控制。执行完后重启Edge,通常就好了。
另一个常见问题是"软件白屏"或"配置丢失"。这种情况往往不是因为Junction没建好,而是因为某些后台进程在Junction建立之前,还在往原来的C:\Users\用户名\AppData路径写文件,导致系统在Junction旁边新建了一个真实的AppData目录。Junction和这个真实目录同时存在,软件读到的就是新目录里的空配置,于是表现成"白屏"或"重新登录"。
遇到这种情况,去C:\Users\用户名下看看有没有两个AppData相关的目录。如果发现既有AppData(Junction),又有AppData_backup或者系统自动重建的真实AppData,就把真实AppData里的内容合并到D盘D:\AppData对应位置,然后删掉真实AppData目录(用rd删,不是右键删除)。
还有一个容易被忽略的问题:某些软件在迁移后界面打开很慢。这是因为缓存数据在D盘机械硬盘上,D盘如果是HDD,读取速度比C盘SSD慢,AppData里的小文件又多,所以启动会变慢。我的建议是,如果条件允许,AppData优先放到SSD分区上,哪怕不是C盘所在的那块盘,只要是SSD就行。如果你D盘是机械硬盘,那迁移的收益要重新评估一下,空间是释放了,但软件启动速度和读写体验多少会有影响。
4.2 日常维护脚本:一条bat命令定期清理C盘垃圾
AppData搬到D盘之后,C盘空间的压力会小很多,但并不是一劳永逸。日常使用中垃圾还是会累积,我建议保留一条顺手的维护脚本,每隔一两周跑一次。
下面这个bat脚本是我在自己的电脑上用的,思路很简单:清理临时目录、清理NVIDIA着色器缓存、清理缩略图缓存。
bat复制@echo off
echo 清理用户临时目录...
del /q /f /s "%TEMP%\*" >nul 2>&1
echo 清理系统临时目录...
del /q /f /s "%SystemRoot%\Temp\*" >nul 2>&1
echo 清理NVIDIA DXCache...
del /q /f /s "%LOCALAPPDATA%\NVIDIA\DXCache\*" >nul 2>&1
echo 清理Windows缩略图缓存...
del /q /f /s "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db" >nul 2>&1
echo 清理完成。
pause
把这段保存为cleanC.bat,右键"以管理员身份运行"即可。>nul 2>&1的作用是让删除时产生的错误提示不显示出来,比如某些文件被占用删不掉,直接忽略。你可以把它放到桌面,也可以加到任务计划里每周自动执行一次。
但我必须说实话:这种脚本治标不治本。真正让C盘长期保持干净的做法,是在日常使用中养成几个习惯:新装的软件安装路径手动改到D盘;微信、QQ的文件保存路径在软件设置里改到D盘;浏览器下载目录改到D盘;大体积文件不要放在桌面。这些习惯比任何清理脚本都有效。如果你之前已经按文章开头说的方式把AppData整体迁到了D盘,那么大部分软件的缓存和配置都已经跟着搬到D盘了,C盘的增长速度会明显放缓。
4.3 我个人对"搬家 vs 扩容 vs 重装"的取舍建议
最后聊聊一个很多人常问的问题:既然C盘空间这么紧张,干脆用DiskGenius之类的工具把D盘空间划一部分给C盘,彻底扩容,是不是比折腾AppData更好?
我的看法是,两个方案解决的问题不同。AppData搬家解决的是"C盘被数据填满"的问题,扩容解决的是"C盘物理容量本身太小"的问题。如果C盘是128GB的SSD,装了系统、装了软件,再把AppData搬走后还是不到20GB可用,那确实需要考虑扩容。但如果你C盘是256GB或512GB,只是被AppData堆了几十GB数据,那先搬家绝对是最快、风险最低的方案——毕竟扩容分区涉及调整分区表,虽然现在图形化工具很成熟,但期间断电、文件系统错误(比如有人遇到"$bitmap中有标记"的提示)都会带来数据风险。我见过太多人为了扩容折腾半天,结果系统进不去了。
重装系统是另一条路,适合那种"C盘已经红线很久,系统里垃圾多到清不动"的情况。重装之后的第一件事,就是别再把软件默认装到C盘。很多人在重装后AppData又逐渐膨胀,就是因为在软件安装界面一路Next,完全没有改路径的意识。按照这篇文章的方法,重装完系统后第一时间把AppData复制到D盘并做好Junction,后面几年都会很省心。
具体到实操建议上,我个人的做法是:如果是老电脑、C盘已经红了,先清一遍临时文件,再执行AppData搬家;如果搬家后C盘还是很紧张,再考虑用分区工具扩容;如果系统本身用了五六年、各种问题不断,直接重装系统,然后用Junction方案防患于未然。三步按顺序来,每步都能帮你省下不少时间。
我在给新电脑做初始设置时,会在D盘提前建好AppData目录,装完系统第一周就把链接做上,后面几乎不会为C盘空间发愁。用过一次这个方案,你大概率就不会想再回到来回清理C盘的日子了。
