实现一个批量重命名文件的函数,可以通过Node.js提供的fs
核心模块完成。下面是详细的实现攻略:
1. 引入fs模块
const fs = require('fs');
2. 定义重命名函数
function batchRenameFiles(dirPath, oldNameRegex, newNameString) {
fs.readdir(dirPath, function(err, files) {
if (err) {
console.error(err);
return;
}
files.forEach(function(file) {
if (oldNameRegex.test(file)) {
const oldFilePath = `${dirPath}/${file}`;
const newFileName = file.replace(oldNameRegex, newNameString);
const newFilePath = `${dirPath}/${newFileName}`;
fs.rename(oldFilePath, newFilePath, function(err) {
if (err) {
console.error(err);
return;
}
console.log(`${oldFilePath} -> ${newFilePath}`);
});
}
});
});
}
该函数接收3个参数:
dirPath
:指定目标文件夹的路径。oldNameRegex
:用正则表达式描述要替换的文件名的模式。newNameString
:替换后的文件名字符串。
该函数通过fs.readdir()
读取目标文件夹中的所有文件名,遍历每一个文件名,如果符合oldNameRegex
模式,则替换文件名为newNameString
,并使用fs.rename()
函数重新命名。如果fs.readdir()
出现错误,则使用console.error()
输出错误信息。如果fs.rename()
出现错误,则使用console.error()
输出错误信息。
3. 示例
假设目标文件夹中有多个文件,文件名分别为:
1.txt
2.txt
3.txt
3.1 示例一
将所有.txt
文件名中的数字替换为a
,调用方式如下:
batchRenameFiles('./dirPath', /\d+\.txt$/, 'a.txt');
执行后,目标文件夹中的文件名将变为:
a.txt
a.txt
a.txt
3.2 示例二
将所有以.md
为后缀名的文件名中的-
替换为_
,调用方式如下:
batchRenameFiles('./dirPath', /-/g, '_');
执行后,目标文件夹中的文件名将按照所描述的规则进行重命名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用node实现一个批量重命名文件的函数 - Python技术站