TouchFish.FileMove:节省你的 C 盘空间
遇到过以下问题?
- C 盘空间越来越小,各种软件疯狂占用空间?
- 想把某个大型软件移到别的盘,但担心移动后程序找不到文件?怕快捷方式失效,配置文件乱了?
- 移动文件夹,结果软件直接打不开了?
- 手动链接?打开命令行,敲一大串命令?
- 想要搬迁安装在 C 盘的软件,但又不想重新安装配置一遍?
传统的解决方式是重新安装软件到其他盘(重新下载、重新配置,太麻烦!)。
有没有一种方式,能让你轻松地把文件夹移动到其他位置,同时让所有程序都以为文件还在原来的位置?
可以使用 TouchFish.FileMove!
GitHub :ILoveScratch2/TouchFish.FileMove
什么是 TouchFish.FileMove?
TouchFish.FileMove 是一个轻量级的 Windows 文件移动工具,它能帮你将文件夹从一个位置搬到其他位置,同时在原位置自动创建符号链接,让所有软件无感知地继续工作。使用 C++ 编写。
特点:
- 图形化操作:不需要记住复杂的命令,点几下鼠标就能完成
- 自动符号链接:移动后在原位置自动创建符号链接,程序访问时自动重定向
- 实时进度显示:显示文件大小、移动速度和剩余时间
- 智能回滚:如果操作失败,自动回滚到原始状态
工作原理
符号链接
当程序访问符号链接时,Windows 会自动把它重定向到真正的文件位置(类似于完全无感的快捷方式)。
假设你有一个安装在 C:\Program Files\LG,现在想把它移到 D:\LG。
- 移动文件:把
C:\Program Files\LG所有内容移到D:\LG - 创建符号链接:在
C:\Program Files下创建一个名为LG的符号链接,指向D:\LG
现在:
- 物理文件在
D:\LG(节省了 C 盘空间) - 任何访问
C:\Program Files\LG的程序,Windows 会自动重定向到D:\LG,程序完全不知道文件已经移动了!
TouchFish.FileMove 的流程
点击“开始移动”后,程序会执行以下步骤:
- 验证路径:检查源路径是否存在,目标路径是否合法
- 计算大小:递归遍历源文件夹,计算总大小
- 判断策略:
- 如果在同一驱动器(如都在 C 盘)→ 直接使用 Windows 的
MoveFileAPI,在一个驱动器内移动文件会很快(真的很快) - 如果跨驱动器(如 C 盘到 D 盘)→ 先复制再删除(慢但稳定)
- 如果在同一驱动器(如都在 C 盘)→ 直接使用 Windows 的
- 执行移动:在新线程中移动文件,主线程更新进度条
- 创建符号链接:使用
CreateSymbolicLinkAPI 在原位置创建链接 - 错误处理:如果任何步骤失败,自动回滚到原始状态
注意事项
不建议移动系统关键目录
系统关键目录不要移动,可能导致系统炸掉,比如:
C:\Windows- Windows 系统目录C:\Program Files- 整个文件夹(可以移动里面的单个程序)C:\Program Files (x86)- 同上C:\Users- 用户配置目录
需要移动具体的某个软件,不要移动系统级目录。
可以安全移动的目录
普通的目录可以安全移动,比如:
C:\Program Files\某个特定程序(例如C:\Program Files\TouchFish)C:\Program Files (x86)\Steam\steamapps\common\TouchFish-Game- 缓存目录
需要管理员权限
创建符号链接必须以管理员身份运行,否则无法创建符号链接。会自动申请管理员权限的。
不支持 FAT32
FAT32 文件系统不支持符号链接,必须使用 NTFS 格式的磁盘。
移动位置变化
如果盘符变了(比如 D 盘变成 E 盘),符号链接会失效,程序会找不到文件。
如果被移动之后的新位置被删除了,也是不能访问到的。
相关链接
- GitHub 仓库:https://github.com/ILoveScratch2/TouchFish.FileMove
- 下载地址:Releases
- TouchFish 项目
最后,如果 TouchFish.FileMove 帮到了你,给个 Star 吧
其实我又双叒叕是来讨 Star 的