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