NodeJS 批量修改文件名称

需求

出于某些原因,需要整理修改网易云音乐下载的歌曲文件名称,发现命名基本为:[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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础用法 批量修改文件名不是很容易吗?只需要使用第三方工具不就可以了吗?为什么还要使用Excel? 因为这次我们要...
    五月小闲人阅读 14,458评论 0 14
  • //公共引用 varfs =require('fs'), path =require('path'); 1、读取文...
    才気莮孒阅读 838评论 0 1
  • 文件系统模块是一个封装了标准的 POSIX 文件 I/O 操作的集合。通过require('fs')使用这个模块。...
    保川阅读 799评论 0 0
  • 你孤单的伤心,杳无音讯 你知道其实我都知道
    黎元阅读 101评论 0 0
  • 结发为夫妻,恩爱两不疑。——题记 两年前的一天,我还是一家摄影店的一员。我记得很清楚,那天天气特别好,微风...
    柠檬来的阅读 297评论 0 2