使用JavaScript编写文件批量更名工具

2017-12-13  本文已影响0人  狍子子子

写在前边

工作过程中需要大量文件重命名,手动改吧太傻了,也懒,于是还是动手写个脚本一劳永逸。

环境

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]!!!

emoji.jpg

所以逼不得已对files进行一次排序

使用方法

pic.png

空格隔开第二开始依次是脚本路径,目标文件夹路径,前缀,起始数字,忽略的文件包含字符
最后两个可以不用写

写在后面

第一次写文章,应该没有错别字

上一篇下一篇

猜你喜欢

热点阅读