NodeJS 批量修改文件名称

需求

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



思路

不可能手动修改吧,太麻烦了。想想 NodeJS 有文件读写操作功能,嗯,今晚就是你了~( •̀ ω •́ )y
找了一下 NodeJS 的 API,File System 里面有 rename、renameSync 两个方法。 一个异步,一个同步,这里用 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);
});



效果图

修改前:


NodeJS 批量修改文件名称_第1张图片
old.png

修改后:


NodeJS 批量修改文件名称_第2张图片
new.png



小结

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

你可能感兴趣的:(NodeJS 批量修改文件名称)