用 Rust 写了个小工具——带进度条的批量文件重命名脚本
继上一篇谈到学习 Rust 的方法后,我立刻投入实践:用它写了一个实用的小工具——一个支持进度显示的批量文件重命名脚本。这个工具能根据指定规则(比如添加前缀、替换关键词、按序号重命名等)快速处理一个目录下的所有文件,并在终端实时显示进度条,避免“卡死”感。
虽然功能简单,但整个过程让我深入体验了 Rust 的工程化能力、错误处理哲学和生态友好性。今天就来复盘开发全过程。
一、需求场景
平时整理照片、下载资料时,常遇到文件名杂乱的问题。比如:
IMG_20231001_123456.jpg
Screenshot_2023-10-02.png
我希望一键把它们改成:
Vacation_001.jpg
Vacation_002.png
同时,在处理上百个文件时,能看到进度,而不是干等。
二、技术选型
我选择了几个 Rust 生态中广受好评的库:
用 clap 解析命令行参数,它能自动生成清晰的帮助信息;
用 indicatif 显示美观的进度条;
文件操作则完全依赖 Rust 标准库,稳定可靠;
错误处理全程采用 Rust 推荐的 Result 模式,代码清晰且健壮。
三、核心流程
用户通过命令行传入目标目录和命名规则;
程序扫描目录,获取所有待处理文件;
对文件排序,确保重命名顺序一致;
遍历每个文件,生成新文件名;
在终端显示实时进度条;
执行重命名操作。
为了让用户更安心,我还加入了“预览模式”——只显示会改哪些名字,但不实际修改文件。
四、踩过的坑与收获
跨平台路径问题:不同系统对中文或特殊字符的文件名处理方式不同,后来统一使用 Rust 的路径类型,避免了手动拼接字符串。
中断恢复难:如果程序中途崩溃,已经改过的名字无法自动还原。未来可以考虑加日志记录,支持回滚。
性能令人惊喜:测试时处理 500 个文件不到半秒,Rust 的效率确实出色。
用户体验很重要:加上进度条和预览功能后,工具从“能用”变成了“好用”。