使用 nodejs 对文件进行批量重命名

0. 前言

从B站下载了一点视频,硕鼠自动将标题添加到了每个文件名的前面,导致文件名过长,不方面查看文件的具体内容。

虽然只有二十几个文件,但是手动删除前缀还是个不小的工作量,还有可能删除错误。考虑到正在努力成为一个程序员,应该为每一个带有重复属性的工作寻求优化。

想到nodejs可以读写文件,决定尝试使用nodejs来实现。网上搜到一点类似做法,根据自己需要,改吧改吧,二十分钟写好了(确实比手动删除慢了好多==)。

1. 引包

// nodejs中文件操作主要依靠fs模块
const fs = require('fs')

2. 实现

// 1. 定义两个工具函数
// 获取指定目录路径下的所有文件名
const getFileNames = path => {
    // 使用readdir获取指定目录下的所有文件名
    return fs.readdirSync(path);;
}

// 根据指定字符截取文件名,返回截取后的字段
const getFileSuffix =  (fileName, splitChar) => {
    // 取字符第一次出现的位置
    const first = fileName.indexOf(splitChar); 
    // 取字符最后一次出现的位置(根据需要选择)
    // const first = fileName.lastIndexOf(splitChar); 

    const namelength = fileName.length; //取到文件名长度
    return fileName.substring(first + 1, namelength); //截取获得后缀名
}

// 2. 定义目录
const dirName = `D:\\3. 生活\\3.2 文件下载\\硕鼠下载\\我的解析任务1912152356`;

// 3. 读取与改写
let files = getFileNames(dirName);
files.forEach((item, i) => {
    // 这里对旧名操作获取新名
    let newName = getFileSuffix(item, "-")
    // 使用rename方法进行重命名
    fs.rename(`${dirName}\\${item}`, `${dirName}\\${newName}`, (err) => {
        if (err) throw err;
        console.log('重命名完成');
    });
})
posted @ 2019-12-16 15:41  blog_bug  阅读(1732)  评论(0编辑  收藏  举报