之前我们已经使用 deno + ffmpeg 转换了大文件,但是还是有个问题--名字太长不整齐
从网上找来的资源(网盘除外,如动漫花园),名字都很长很长,这可能导致--
天哪,没用的文字一堆,第几集却被淹没了。怎么办呢,手动重命名?
喂,4202年了,还在用这种暴力的方法吗?来,今天我们又封装了一个命令,实现批量改名成--
很简单,这次只有44行却实现了批量删除(如繁体字幕),批量按顺序重命名
说明参数:
- --pattern Glob化的正则表达式,用于匹配文件
- --input 扫描的文件夹
- --deep 深度扫描,支持扫描子目录
- --alert 在重命名或删除前提示 (y/n)>>>
- --pad 文件名长度,如 5 表示补全到 5 位
这是脚本的依赖: _dep.zip
import { globToRegExp } from "https://deno.land/std/path/glob_to_regexp.ts";
import { tree, xtree } from "./_dep.ts";
import { arg, help } from "./_dep.ts";
import { replaceName } from "./_dep.ts";
import { ensure } from "./_dep.ts";
import { exists } from "https://deno.land/std/fs/exists.ts";
help(`
ReNameTool V1
将文件批量排序,批量删除等操作名称特性
Command available:
order
delete
Args available:
--pattern <Glob>
--input <Target Dir>
--deep
--alert
--pad <Number Length,default: 3>
`);
if(typeof arg.pattern != 'string')
throw new Error('--pattern 必须定义,详见帮助(--help)');
if(arg._.includes('order')){
await xtree(arg.input || './',globToRegExp(arg.pattern),!!arg.deep,async function(i,d){
const name = replaceName(d,i.toString().padStart(arg.pad || 3,'0')),
message = i + ') ' + d + ' --> ' + name;
if(arg.alert || await exists(name,{isFile: true})){
if(!await ensure(message)) return;
}else console.log(message);
await Deno.rename(d,name);
});
}else if(arg._.includes('delete')){
let i = 1;
for await (const file of tree(arg.input || './',globToRegExp(arg.pattern),!!arg.deep)) {
const message = (i++) + ') DELETE ' + file;
if(arg.alert){ if(!await ensure(message)) continue; }
else console.log(message);
Deno.removeSync(file);
}
}else console.error('未知模式,请检查输入');
本文由 zlh 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。