配合 KTV 服务端程序使用的重复曲库清理小工具。简单小巧、运行高效、便携分发,用于找出并一键清理曲库目录下的重复媒体文件与重复文件夹,释放磁盘空间。
- 技术栈:C# WinForms(.NET 10, Windows)
- 运行环境:Windows + .NET 10 运行时(Framework-dependent 单文件约 1MB)
- 支持导入
ktv_config.json自动识别其中指定的曲库文件夹,也可手动逐个添加文件夹。 - 扫描时自动跳过小于设定阈值(默认 100 kB,界面可改)的文件。
- 判定逻辑:
- 先按文件大小分组,找出大小一致的文件(与文件名无关);
- 对比文件前 32 kB、中点 32 kB、末尾 32 kB 三处采样字节是否一致(媒体文件无需做耗时的 SHA1/CRC 运算);
- 文件不足 96 kB 时直接全文件内容比对。
- 扫描结果列出所有重复文件分组,支持右键菜单 打开文件 / 打开文件所在位置 以便人工核对。
- 一键清理:自动删除“创建日期更新”(后进入硬盘)的重复文件,每组只保留一个。删除过程只在状态栏显示进度
已删除 xx/xxxx,列表不做动态渲染,减少资源占用。
- 单独按钮扫描重复文件夹:
- 先找出大小、文件数量一致的文件夹;
- 再比对这些文件夹内部文件的相对路径、大小与首尾指纹是否完全相同;
- 完全相同则可整个文件夹整组清理,仅保留一份。
- 可选删除到 回收站(可恢复)或 永久删除。
- 支持中途取消删除操作。
-
添加扫描文件夹
- 点击
导入 ktv_config.json:选择 KTV 服务端的配置文件(如ktv_config.json),程序会自动解析其中指定的曲库目录并加入列表;若某些文件夹不存在,会提示“已添加、扫描时自动跳过”。 - 点击
添加文件夹:手动浏览选择要扫描的文件夹。 - 选中列表中的文件夹后点击
移除选中可将其去掉。 - 可在此处调整“忽略 xx kB 以下的文件”的大小(默认 100)。
- 点击
-
扫描
- 点击
开始扫描(重复文件):查找所有重复的媒体文件。 - 点击
开始扫描(重复文件夹):查找内容完全相同的重复文件夹。 - 扫描过程中状态栏会显示进度;如需中止,点击停止/取消按钮。
- 点击
-
核对结果
- 重复项目会按分组列在下方的列表里。
- 右键某条记录可选择
打开文件(用默认程序打开)或打开文件所在位置(在资源管理器中定位),方便人工确认是否确为重复。
-
一键清理
- 勾选删除方式(回收站 / 永久删除)后点击清理按钮。
- 程序自动删除每组中创建日期较新的重复文件(每组只保留一个);重复文件夹整组也只保留一份。
- 状态栏显示
已删除 xx/xxxx的实时进度,可随时取消。
清理到回收站的项可通过回收站找回;永久删除不可恢复,请谨慎操作。
项目提供 build.bat 一键构建脚本,产物为 publish\DuplicateMediaCleaner.exe:
build.bat
或手动执行:
dotnet publish DuplicateMediaCleaner.csproj -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -o publish
构建出的 exe 为框架依赖单文件,需在装有 .NET 10 运行时的 Windows 机器上运行;直接复制该 exe 即可分发。
DuplicateMediaCleaner.csproj 项目文件(含版本号等)
Program.cs 程序入口
MainForm.cs 主界面(导入/添加/扫描/结果列表/清理)
Scanner.cs 扫描、查重与删除核心逻辑
app.ico 程序图标
build.bat 一键构建脚本
- v0.8.0:初版。支持重复文件扫描清理、重复文件夹比对清理、大小阈值过滤、三段采样指纹、右键打开文件、删除进度提示等。