下载目录攒多了全是杂七杂八的文件。用 aardio 的 fsys.each 遍历目录,再按扩展名规则把文件移动到对应子目录,几十行代码就能实现一个自动归类小工具。
实现思路
fsys.each 指定文件类型遍历,回调得到文件名与完整路径;fsys.getExtensionName 取小写后缀;查规则表拿到目标目录名,目录不存在则 fsys.createDir 创建,最后 fsys.move 移动。
完整代码
import console;
import fsys;
console.open();
var dir = "D:/待整理"; // 要整理的目录
// 扩展名规则:后缀 -> 目标子目录
var rules = {
jpg = "图片"; jpeg = "图片"; png = "图片"; gif = "图片";
zip = "压缩包"; rar = "压缩包"; "7z" = "压缩包";
pdf = "文档"; doc = "文档"; docx = "文档";
mp3 = "音乐"; mp4 = "视频";
};
main = function() {
var count = 0;
for (i, filename, fullpath in fsys.each(dir, , "*.*", "file")) {
var ext = fsys.getExtensionName(fullpath); // 已转小写
var folder = rules[ext];
if (folder == null) continue; // 无规则则跳过
var targetDir = fsys.joinpath(dir, folder);
fsys.createDir(targetDir);
if (fsys.move(fullpath, targetDir)) {
count++;
console.log("已归类:" + filename + " -> " + folder);
} else {
console.log("移动失败:" + filename);
}
}
console.log("整理完成,共移动 " + count + " 个文件");
};
main();
console.pause(true);安全提醒
- 移动是不可逆操作,建议先跑一版只打印不移动的脚本,确认规则无误再放开 move;
- fsys.move 在目标为目录时会把源文件移入该目录,归类前先想清楚命名规则;
- fsys.each 只遍历当前目录不递归,需要递归请改用 fsys.enum。
小结
把规则表与文件操作分离是这类脚本的通用套路,扩展名分类之外,还能换成按修改日期、按文件大小等维度整理。
评论(0)
暂无评论,快来抢沙发吧~