一款开源的Windows下的NTFS文件系统的硬链接批量创建和管理工具,常用于运维以及文件备份,空间节省。它能够智能扫描指定目录下的重复文件,并将其一键转换为硬链接,从而在不影响文件正常使用的情况下,最大化释放你的物理磁盘空间。
- 当前版本: v1.8.1
- 时间: 2026年11月11日
- 国内网盘分流
- 百度网盘:https://pan.baidu.com/s/1bTYxI6l-_RKIJSQ0RnCdYQ?pwd=0000
- 夸克网盘:https://pan.quark.cn/s/2b00811d7a6a
v1.8.1 更新
- 【无 GUI 命令行】新增
--cli模式,提供analyze、create、sync三个子命令;同一个 exe 即可运行,全程不弹窗、不依赖桌面,适合脚本与 AI/Agent 调用。 - 【Agent 友好输出】默认输出 JSON,错误写入 stderr;
analyze返回ok/version/command/root/filesScanned/groupCount/duplicateFileCount/potentialSavings/potentialSavingsText/elapsedMs及groups[],便于程序解析。 - 【默认 dry-run】
create/sync默认只预演、不修改磁盘,确认后加--apply才真正执行;create建链前重新校验 SHA-256,.hlbak唯一避让,跳过受保护路径,默认跳过高风险扩展名(--allow-risky才允许)。 - 【退出码规范】成功
0、执行失败1、用法错误2,方便脚本判断。 - 【版本】版本号升至 1.8.1,manifest 同步为
1.8.1.0。
v1.8 及更早版本的更新记录见 CHANGELOG.md。
NTFS硬链接就像是给同一个文件起了多个不同的"名字",这些名字都指向硬盘上同一份实际数据,无论通过哪个名字修改,内容都会同步变化。 它跟复制文件完全不同——复制会占用两份空间,而硬链接无论创建多少个,都只占用原文件的那一份磁盘空间。 只有当最后一个"名字"被删除后,文件才真正从硬盘消失,就像一把钥匙配多把锁,必须所有锁都拆了,门才能彻底打开。
用来文件查重,并且一键删除多余的数据**(不是删除你的文件!)**,可以让我们在不删除文件的情况下,挤出这些重复文件所占的多余空间!
并且在介绍里我也说了,这个程序可用于文件备份清理、硬盘屯屯鼠、以及一些拥有大量存储空间,但是重复文件过多的人群!
优势可大了! ①我这个程序开源!并且是较为宽松的MIT协议! ②我这个程序可以用列表的形式直观呈现是否硬链接,是否可以创建,还会自动统计一次清除能节省多少空间! ③程序和代码及其小巧!程序本身只有130KB!还不够你一张自拍照大! ④性能极其优越!本程序采用C/C++编写、GUI程序功能使用的是完全的Windows原生api(连SHA256都是!)。使用的GDI+库,让你在高分辨率2K屏、4K屏下都能自适应缩放,完全不会像老程序一样模糊
使用程序扫描清理完后,从文件属性看,空间占用似乎不变。可是!请你看看盘符界面,硬盘的空余空间却变大了!这就是有用,这就是真实的空余空间,不是虚假的!
- 重复文件分析:使用 SHA-256 哈希算法,对文件内容进行精确比对,精准找出深层目录结构中的重复文件。(文件夹下所有内容!)
- 一键批量硬链接转换:一键将所有重复文件转换为硬链接。程序会自动保留每组的第一个文件作为源文件数据,并“永久释放”其余物理文件以释放空间,同时在界面上直观展示总计可省空间。【释放文件数据并不会导致其他地方的文件被删除,而是所有相同文件都会指向同一个数据!这样会节省大量空间,可在硬盘剩余空间展示出效果!】
- 硬链接映射表(v1.7):批量建立硬链接后自动在扫描目录生成
.hlkm映射表,记录每组源文件与副本的路径。游戏或软件更新后点「同步映射表」,程序会找出组内最新的文件并自动把其他路径重新链接过去(跨卷时自动退化为复制),不用再手动扫描和重建。 - 丰富的类型过滤器:下拉菜单内置了多种常用文件过滤规则,包括:常用视频、高清/蓝光视频、音频、图片素材、执行文件、压缩包以及文档等,也支持自定义
*.*扫描。我没想搞太多格式的筛选,暂时先添加这么多了 - 高分屏 (High DPI) 适配:底层通过调用 GDI+ 实现了原生的
SetProcessDPIAware高分辨率显示支持,确保在现代高分屏显示器上界面清晰锐利。并且,这是原生的GUI绘制方案,不依赖第三方各种庞大的框架,把程序体积控制在150KB以内! - 右键上下文菜单:支持在文件列表中右键复制文件名 / 完整路径 / SHA256,在资源管理器中定位、送回收站删除(可还原),以及对已建立的硬链接进行解绑还原。
- 中英双语界面:自动识别系统语言,非中文系统默认英文,也可以在界面上一键切换,选择自动记忆。
- 昼夜模式:自动跟随系统明暗主题,也可手动锁定浅色/深色,纯原生绘制无新增依赖。
- 重复副本直接删除:不想用硬链接的用户,可以每组保留一份、其余重复副本一键送入回收站。
- 软连接模式:勾选「软连接模式」后,一键把重复文件转换为指向源文件的软连接,可跨盘符使用,备份场景更灵活(需管理员权限或 Win10 开发者模式)。
- ACL 权限兜底:TrustedInstaller/SYSTEM 等特殊所有者、权限表拒绝访问的文件也能处理——自动启用特权接管所有权并补权限条目,处理完按需还原。
- 列表多选:Shift 点首尾范围内全勾/全不勾,Ctrl 单击自由勾选,批量操作更顺手。
- 开发语言:C/C++
- 图形界面:原生 Win32 API 和 GDI+
- 查重算法:Windows CryptAPI (计算 SHA-256)
- 极佳的兼容性:宏定义
_WIN32_WINNT 0x0501,保持了对早期操作系统(如 Windows XP)的兼容支持,同时解决基础版 XP SDK 隐藏 SHA256 宏的问题。本项目的目的就在于给硬盘数据做极致的空间整理,不管你的电脑有多老!(到xp都行)
- 在顶部下拉框选择需要扫描的 磁盘 或手动输入 地址。
- 选择需要查找的 文件类型 过滤器(也可以不选)。
- 点击 分析文件(查重),等待右侧列表显示出相同 SHA-256 的重复文件组。
- 确认无误后,点击 一键创建硬链接 完成物理文件的释放与替换。
CLI 与 GUI 是同一个 ElegantHLK.exe,无需额外安装。可以直接用完整路径调用,或把所在目录加入 PATH 后在任意目录运行。CLI 模式不创建窗口、不弹 MessageBox,适合脚本、CI 与 AI/Agent 调用。
| 命令 | 作用 |
|---|---|
ElegantHLK.exe --cli analyze <dir> |
只读分析重复文件,输出统计与分组 |
ElegantHLK.exe --cli create <dir> |
扫描目录并建立硬链接,默认 dry-run |
ElegantHLK.exe --cli sync <map.hlkm> |
按映射表同步硬链接,默认 dry-run |
ElegantHLK.exe --cli version |
输出版本 |
ElegantHLK.exe --help / -h |
输出用法 |
ElegantHLK.exe --version / -V 与 --help / -h 等价于对应 CLI 命令。
| 参数 | 说明 |
|---|---|
--filter "*.mp4;*.mkv" |
扩展名过滤,分号分隔 |
--include-regex <R> |
只处理文件名匹配正则的文件 |
--exclude-regex <R> |
跳过文件名匹配正则的文件 |
--min-size <MB> |
文件大小下限(MB) |
--max-size <MB> |
文件大小上限(MB) |
--json / --human |
输出格式,默认 JSON |
--out <file> |
把结果写入文件 |
--apply |
create / sync 真正执行;不加则 dry-run |
--allow-risky |
create 允许处理高风险扩展名 |
create/sync默认 dry-run,只输出将要执行的操作;加--apply才修改磁盘。create建立链接前重新校验 SHA-256;.hlbak已存在时自动使用唯一名称;IsProtectedPath命中的系统关键路径直接跳过;高风险扩展名默认跳过,只有--allow-risky才处理。sync按映射表分组,取组内最新文件为源重新建立硬链接。- 错误信息写入 stderr,不会弹出 GUI 提示。
- 退出码:
0成功,1执行失败,2用法错误。
analyze 默认返回 JSON:
- 顶层字段:
ok、version、command、root、filesScanned、groupCount、duplicateFileCount、potentialSavings、potentialSavingsText、elapsedMs groups[]:sha256、size、sizeText、uniquePhysicalFiles、files
Agent 建议显式加 --json,解析 ok 与退出码;需要落盘时用 --out。
# 分析目录并保存 JSON 报告
.\ElegantHLK.exe --cli analyze "D:\Videos" --filter "*.mp4;*.mkv" --json --out .\report.json
if ($LASTEXITCODE -ne 0) { throw "analyze failed: $LASTEXITCODE" }# 先 dry-run 查看计划,确认后再 apply
.\ElegantHLK.exe --cli create "D:\Videos" --filter "*.mp4" --json
.\ElegantHLK.exe --cli create "D:\Videos" --filter "*.mp4" --apply --json# 按映射表同步
.\ElegantHLK.exe --cli sync "D:\Videos\ElegantHLK-map-20261111-120000.hlkm" --apply --json-
作者:恒烈 (EternalBlaze)
-
开源协议:本项目基于 MIT 协议开源。
更早版本(v1.0 及更早)与全部历史更新记录见 CHANGELOG.md。



