我的 C 盘只有 128GB,迁移前常年只剩约 11GB,系统天天弹盘满警告;而 WorkBuddy 的数据目录(C:\Users\<用户名>.workbuddy,会话记录、记忆文件、插件缓存、日志)越用越大,干活都不敢让它生成长报告。(可惜当时没留截图,下文的"迁移后"属性图可作对照)
我的目标很明确:
我第一反应是改环境变量,实测失败:这类程序里读环境变量的代码路径有 100 多处,但日志、刷新、设备 ID 等模块是硬编码 C:\Users\xx.workbuddy 的,改了 env 照样落回 C 盘。
最终方案是 Junction(目录联接):把原路径变成一个"传送门",所有路径解析(包括硬编码)都透过它落到 D 盘。对上层应用完全透明,也不用管理员权限(在用户目录下建 Junction 不触发 UAC)。
联接建好后,dir 一眼就能看出端倪:<JUNCTION> 标签 + 方括号里的 D 盘真身路径。对上层完全透明,程序照常读写老路径,数据实际全部落在 D 盘:
cmd /c dir C:\Users\xx | findstr /i workbuddy

第 1 步:只读盘点
Get-Item "$env:USERPROFILE.workbuddy" -Force | Select Attributes # 确认还不是 ReparsePoint
(Get-ChildItem "$env:USERPROFILE.workbuddy" -Recurse -Force -File |
Measure-Object Length -Sum) # 统计文件数/字节
Get-PSDrive C,D # 看两块盘剩余空间
第 2 步:等程序完全退出(不要主动杀进程)
程序有自启/守护逻辑,杀一个补一个。正确姿势是"守株待兔":轮询进程,连续 10 秒检测不到才算退干净。
第 3 步:增量同步 + 双向校验
robocopy "C:\Users\xx.workbuddy" "D:\Users\xx\WorkBuddy" /E /COPY:DAT /DCOPY:DAT /R:2 /W:1 /LOG:rc.log
⚠️ 关键纪律:绝不先删源。顺序必须是:复制 → 校验目标文件数和字节数都不小于源 → 源目录改名备份(.old-时间戳)→ 才建联接:
Rename-Item "C:\Users\xx.workbuddy" ".workbuddy.old-20260921-1030"
New-Item -Path "C:\Users\xx.workbuddy" -ItemType Junction -Value "D:\Users\xx\WorkBuddy"
第 4 步:验证真的在用新盘
别只看脚本日志。去看 D 盘目标目录里最新文件的时间戳是不是还在往前走:
ls -lt --time-style=+%H:%M:%S /d/Users/xx/WorkBuddy/ | head
时间戳在动 = 迁移真成功了,比联接属性=True 更有说服力。
坑 1:程序运行中复制,进度条永远追不上
错误 32 (0x20) 另一个程序正在使用此文件。日志、会话、缓存在被持续写入,复制速度赶不上写入速度,永远收敛不了。解法:先让程序完全退出再同步。
坑 2:后台隐藏进程跑长任务,活不过 10 分钟
我用 Start-Process xxx.bat -WindowStyle Hidden 挂后台跑复制,实测每次都莫名死掉。解法:长任务老老实实用用户可见的前台窗口跑,脚本末尾加 pause,顺便加单实例锁(锁文件里写进程 PID,防止手滑双击开两个窗口互相踩)。
坑 3:PowerShell 脚本中文乱码 + 莫名语法错误
PowerShell 5.1 下脚本没存成 UTF-8 with BOM,中文全成乱码,还会连带吞掉换行导致语法错误。校验方法:IO.File::ReadAllBytes($p)0..2 应该是 EF BB BF。
坑 4:迁完 C 盘空间没变?备份还没删!
流程是"复制 + 源改名",那 900MB 还实打实占在 C 盘。删备份时又踩两个坑:
- 十万级小文件目录整体删除会直接失败(跑 26 秒一个文件没动)。解法:按顶层条目分块循环删,每删一个 Test-Path 复核。
- logs\2026-09-23 当日日志目录怎么都删不掉,一度以为是当天日志有保护。用 icacls <路径> 一看真相:WorkBuddy 给当日日志目录挂了显式 DENY ACE(拒绝删除,子目录全部继承),日期翻篇后锁还不拆,旧目录就永远删不掉。解法一条命令:
icacls "C:\Users\xx.workbuddy\logs\2026-09-23"

第一行那个 (OI)(CI)(DENY)(DE,DC) 就是元凶:拒绝删除、拒绝删子项,整个目录树全部继承。读写都正常,唯独删不掉、改名也失败 —— 下次遇到"权限看起来正常但文件就是删不掉",先 icacls 查一下有没有 (DENY),八成就是它。
坑 5:升级一次,桌面图标消失一次
迁移后 WorkBuddy 升级,桌面图标没了。排查发现:升级器只认 C:\Users\xx\Desktop 这个默认桌面路径,而我的桌面早就自定义在 D:\桌面文件-xxx。解法:从开始菜单把 WorkBuddy.lnk 复制一份到真实桌面即可。自定义过桌面路径的注意,升级后大概率要手动补一次。
坑 6:工具报"删除失败",文件其实已经删了
有一次工具报 trash-failed,但用 Test-Path 一查,文件早就进回收站了。教训:任何工具报的状态都要用独立手段复核,别信单一来源。另外注意:进了回收站 ≠ 释放了空间,要清空才真释放;回收站里还有大量"孤儿索引"(原文件早没了只剩 544 字节索引),别被数量吓到。

迁移后 C 盘剩余空间
迁移前我的 C 盘(128GB)只剩约 11GB,天天弹盘满警告;迁移并清理备份后稳定在 12GB 以上,且数据增长全部落在 D 盘,C 盘从此不再被 WorkBuddy 蚕食。
- C 盘释放约 900MB+,且之后数据增长全部落在 D 盘
- WorkBuddy 一切功能正常,零配置改动
- 后续升级只有"桌面图标"一个小坑,复制 lnk 即修
两个安全提醒:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。