deno 重命名工具

in 前后端开发 with 0 comment

之前我们已经使用 deno + ffmpeg 转换了大文件,但是还是有个问题--名字太长不整齐
从网上找来的资源(网盘除外,如动漫花园),名字都很长很长,这可能导致--

看不到!

天哪,没用的文字一堆,第几集却被淹没了。怎么办呢,手动重命名?
喂,4202年了,还在用这种暴力的方法吗?来,今天我们又封装了一个命令,实现批量改名成--

整齐

很简单,这次只有44行却实现了批量删除(如繁体字幕),批量按顺序重命名

重命名

说明参数:

这是脚本的依赖: _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('未知模式,请检查输入');

Responses