写在前边
工作过程中需要大量文件重命名,手动改吧太傻了,也懒,于是还是动手写个脚本一劳永逸。
环境
Node.js
代码
'use strict'
let fs = require('fs');
let args = process.argv;
let dist = 'dist';
let src = 'src';
let index = 0;
let ignore = '';
// 目标路径
dist = args[2];
// 名字前缀
src = args[3];
// 递增后缀
index = args[4] || 1;
// ? 忽略的文件
ignore = args[5] || "";
let files = fs.readdirSync(dist);
let sortValue = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
files.sort(function (a, b) {
let index = -1;
for (let i = sortValue.length - 1; i >= 0; i--) {
index = a.indexOf(sortValue[i]);
if (index != -1) {
// console.log("a: ", a, " i: ", i, " index: ", index);
break;
}
}
if (index == -1) {
return 0;
}
else {
let aid = parseInt(a.substring(index));
let bid = parseInt(b.substring(index));
if (aid == NaN || bid == NaN) {
return 0;
}
else {
return aid - bid;
}
}
});
for (let i = 0; i < files.length; i++) {
if (ignore !== "" && files[i].indexOf(ignore) === -1) {
continue;
}
let stat = fs.statSync(dist + "\\" + files[i]);
let runRename = function (stat) {
if (stat.isFile()) {
let prefix = dist + "\\";
let suffix = files[i].substring(files[i].indexOf("."));
let oldName = prefix + files[i];
let newName = prefix + src + index + suffix;
fs.renameSync(oldName, newName);
index++;
}
};
runRename(stat);
}
这里说下为什么要对files排序
因为我发现readdirSync返回的数组会对结果排序
比如文件夹里的顺序是 1.png,2.png,10.png
返回的结果是 [1.png,10.png,2.png]!!!
所以逼不得已对files进行一次排序
使用方法
pic.png空格隔开第二开始依次是脚本路径,目标文件夹路径,前缀,起始数字,忽略的文件包含字符
最后两个可以不用写
写在后面
第一次写文章,应该没有错别字
网友评论