NodeJS 批量修改文件名称

作者: 於風聽語 | 来源:发表于2017-02-01 20:57 被阅读385次

需求

出于某些原因,需要整理修改网易云音乐下载的歌曲文件名称,发现命名基本为:[musicName] - [singer].[fileType],比如 FORMOSA - 悲情面具.mp3
需要修改成:[singer] - [musicName].[fileType],比如 悲情面具 - FORMOSA.mp3


思路

不可能手动修改吧,太麻烦了。想想 NodeJS 有文件读写操作功能,嗯,今晚就是你了~( •̀ ω •́ )y
找了一下 NodeJS 的 API,File System 里面有 renamerenameSync 两个方法。 一个异步,一个同步,这里用 rename 好了。
看一下调用方法:fs.rename(oldPath, newPath, callback),So easy ~
就是传入文件原始路径,和想要改成的路径就行了。


步骤

  • 遍历目录,获得文件路径
  • 使用正则得到想要的文件路径
  • 修改文件

源码

var fs = require('fs');

var PATH = './music'; // 目录

//  遍历目录得到文件信息
function walk(path, callback) {
    var files = fs.readdirSync(path);
 
    files.forEach(function(file){
        if (fs.statSync(path + '/' + file).isFile()) {
            callback(path, file);
        }
    });
}

// 修改文件名称
function rename (oldPath, newPath) {
    fs.rename(oldPath, newPath, function(err) {
        if (err) {
            throw err;
        }
    });
}

// 运行
walk(PATH, function (path, fileName) {
    var oldPath = path + '/' + fileName, // 源文件路径
        newPath = path + '/'+ fileName.replace(/([^\s]*)( - )([^\s.]*)(.\S*$)/, '$3$2$1$4'); // 新路径

    rename(oldPath, newPath);
});

效果图

修改前:


old.png

修改后:


new.png

小结

其实我也就会这种类似的文件操作,是不是太菜了,啊哈 /(ㄒoㄒ)/~~
还有,客官请忽视歌曲,那不是我的 style... ( ╯□╰ )
—— 2017/02/01 By Live

相关文章

网友评论

  • jicemoon:这个功能有点简单,我曾经用c#写过一个批量重命名的工具,可以参考一下

本文标题:NodeJS 批量修改文件名称

本文链接:https://www.haomeiwen.com/subject/tpslittx.html