Windows 目录迁移与C盘空间释放

SKILL运维和基础设施
运维和基础设施 未标注权限 许可证不明确
安装这个技能

把正在被程序占用的目录(家目录、缓存目录、软件数据目录)迁移到另一个盘并立刻释放原盘空间,全程无需退出目标程序。用逐子目录 junction(目录联接)四步法:同步→改名→建联接→删旧。适用于 C 盘爆满、软件数据目录搬家、AppData 迁移。触发词:目录迁移到D盘、释放C盘空间、家目录迁移、junction 迁移、目录联接搬家、workbuddy 迁移、AppData 太大。

一句话选型结论

按资料字段整理

Windows 目录迁移与C盘空间释放是运维和基础设施类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类运维和基础设施 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_67a86573/windows-dir-migration
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

运维和基础设施
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_67a86573仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791625345
正文体量6.9 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查服务与日志

按现象定位服务状态与日志线索。

写部署与巡检脚本

把重复的部署、巡检写成脚本。

故障排查

按步骤排查网络、依赖与配置。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在运维和基础设施场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Windows 目录迁移与C盘空间释放当前 未标注权限 未标注 未标注 未标注 有
Azure 部署 调用外部服务 GitHub 仓库 664.2 万 Codex、Claude、Cursor 有
Azure diagnostics 问题管理 调用外部服务 GitHub 仓库 657.6 万 Codex、Claude、Cursor 有
Azure aigateway 部署 调用外部服务 GitHub 仓库 655.3 万 Codex、Claude、Cursor 有
Azure AI 搜索 调用外部服务 GitHub 仓库 651.4 万 Codex、Claude、Cursor 有
Azure Cloud migrate 部署 调用外部服务 GitHub 仓库 650.7 万 Codex、Claude、Cursor 有

SKILL.md 全文

6.9 KB
模型实际读到的说明书原文,来自技能仓库

Windows 目录迁移与空间释放

何时用

  • 某盘(通常是 C 盘)空间告急,某个软件的数据目录占了几个 GB
  • 该目录正在被程序使用,不能退程序、不能重启
  • 目标:把数据挪到另一个盘,原盘空间立刻释放,程序无感知继续跑

核心原理(这是全部关键)

> Windows 上,文件句柄不阻止目录改名。

程序正读写目录里的文件,照样可以 rename 这个目录。改完名立刻建 junction 指回新位置,路径依然有效:
- 老进程:持有旧文件句柄,继续写旧位置(已改名为 _moved_xxx),不受影响
- 新进程:走 junction,落到新盘
- 旧目录随后 rd /s /q 删掉 → 空间当场释放

不要去剪切整个目录,也不要强改根目录名 —— 根目录常被程序持有目录句柄,必失败。
要逐个子目录做,哪个能改就先迁哪个,改不动的跳过,收益最大化。

四步法(对每个子目录)

robocopy  源子目录  目标子目录  /E          # 1 同步
os.rename(源子目录, _moved_xxx)             # 2 改名
mklink /J 源子目录  目标子目录              # 3 建联接
rd /s /q _moved_xxx                        # 4 删旧,释放空间

第 2 步失败 → 跳过该目录(数据在,无损失)。
第 3 步失败 → 立刻把 _moved_xxx 改回原名(回滚)。
第 4 步失败 → 部分文件被占用时会删掉其余全部,残留留着,重启后再删。

执行流程

1. 先诊断,别急着复制

# 谁最占地方(注意:Python os.walk 会被 260 字符路径上限坑,见下方"坑")
python -c "import os;root=r'<SRC>';rows=[]
for n in sorted(os.listdir(root)):
    p=os.path.join(root,n)
    if os.path.isdir(p) and os.path.realpath(p)==p:
        s=sum(os.path.getsize(os.path.join(r,f)) for r,d,fs in os.walk(p) for f in fs)
        rows.append((s,n))
[print(f'{s/1024**3:7.3f} GB  {n}') for s,n in sorted(rows,reverse=True)[:15]]"

同时确认目标盘空间够、目标路径已存在且为空。

2. 批量迁移

用 scripts/migrate_subdirs.py,改顶部三个常量后跑:

BASE = r'C:\Users\<user>\<dir>'      # 源
DSTB = r'D:\<target>\<dir>'          # 目标
SKIP = ['binaries']                  # 运行时本体,先跳过(最后单独处理)

脚本对每个子目录独立 try/except,失败只影响自己。跑完打印释放了多少。

3. 处理运行时本体目录(可选,收益大)

Python/Node 之类的运行时目录也能迁 —— 老爹实测 1.12 GB 的 binaries 迁完只残留 96 MB(一个锁着的 node.exe)。
放到列表最后处理,因为脚本自身可能正跑在里面。

4. 收尾:运行中改不动的目录

少数目录被程序持有目录句柄(fs.watch 监听 / 作为工作目录),改名报 PermissionError WinError 5,运行中无解。
交给退出后执行:

# 写收尾脚本(先 kill 目标程序,迁移,再启动它),注册到 RunOnce
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v XxxFinal /t REG_SZ \
  /d "\"<python.exe>\" \"D:\<target>\migrate_final.py\"" /f

# 取消
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v XxxFinal /f

模板见 scripts/migrate_final.py。

5. 兜底:清内容

目录实在迁不走,清内容也能释放:
- N 天前的日志(当前正在写的文件 mtime 是今天,删不掉也选不中)
- Crashpad 崩溃转储目录
- 各类 *Cache / CodeCache

坑(都踩过)

坑 真相
用 Python os.walk 数文件 会被 260 字符路径上限静默跳过。老爹实测:数出 92,812,robocopy 报 252,587,差 16 万。统计海量小文件目录要用 robocopy /L 干跑看汇总
robocopy 退出码 0-7 正常,8 = 有文件被占用失败(可接受),16+ 才致命。判定失败必须 >= 16,用 >= 8 会误中止
PermissionError WinError 5 不是文件被占用,是目录句柄被持有(监听/工作目录)。运行中无解,只能等程序退出
schtasks /sc once 本机不可靠,触发器过期后显示「下次运行时间 N/A」,根本没执行
schtasks /run 只回「尝试运行」,也可能没真起来。每次都要靠产物日志反证,别信返回值
wmic process call create "cmd.exe /c ..." 被安全策略拦截("Invoking cmd.exe from Bash bypasses command validation")
想让脚本不被 taskkill /T 连坐 脚本若在目标程序的终端里启动,属同一进程树,会被一起杀。正解是不用杀进程的方案(本 skill 的四步法),而不是费劲脱离进程树
建 junction 怎么调 cmd Bash 直接调 wmic ... cmd.exe 会被拦,但 Python 里 subprocess.run(['cmd','/c','mklink','/J',src,dst]) 正常可用

安全红线

  1. 永远先同步、确认副本在,才动源目录
  2. 第 3 步(建联接)失败必须立刻回滚改名
  3. 删旧目录放在最后,且删除失败不影响已完成的联接
  4. 对 Desktop / Downloads / Documents / Home 或个人目录做清理类操作前,只出报告,不自动删
  5. 破坏性删除前要有明确的用户确认或事后可回滚的备份

实战战绩(2026-09-10,WorkBuddy 家目录 .workbuddy 7.5 GB)

阶段 结果
起始 C 盘仅剩 3.55 GB
主脚本(27 个子目录,运行中) → 9.85 GB
清旧日志 + Crashpad → 10.4 GB
RunOnce 收尾(logs/app/plugins/connectors + _moved_binaries) → 11.6 GB

C 盘 3.55 → 11.6 GB,释放 8 GB,全程只重启了电脑一次,WorkBuddy 未中断业务。

完整时间线:主脚本运行中迁移(traces 1.83 / binaries 1.09 / workspace 1.78 ...)
→ 少数目录撞 WinError 5 跳过 → 注册 RunOnce → 用户重启电脑 → 登录后自动跑完收尾 → 自动重启 WorkBuddy。

残留处理:_moved_logs 0.563 GB 删不掉。注意区分两种失败:
- 文件被进程占用 → 真删不掉,重启后自动清
- safe-delete 走回收站失败(Error during a 'trash' operation)→ 是安全机制拦截,不是占用,
用 cmd /c del /f /q 或 rd /s /q 直接删可绕过,别误判成占用

常见问题

5 问
答案由本站依据条目字段整理
Windows 目录迁移与C盘空间释放怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_67a86573/windows-dir-migration。安装方式为未标注。装完刷新技能列表或重开客户端。

Windows 目录迁移与C盘空间释放支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Windows 目录迁移与C盘空间释放权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Windows 目录迁移与C盘空间释放收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Windows 目录迁移与C盘空间释放用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。