需求
出于某些原因,需要整理修改网易云音乐下载的歌曲文件名称,发现命名基本为:[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);
});
效果图
修改前:
old.png
修改后:
new.png
小结
其实我也就会这种类似的文件操作,是不是太菜了,啊哈 /(ㄒoㄒ)/~~
还有,客官请忽视歌曲,那不是我的 style... ( ╯□╰ )
—— 2017/02/01 By Live
网友评论