-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
seqname.js
37 lines (28 loc) · 1.01 KB
/
seqname.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/* Node.js script to give items sequential names starting from 1.
// (Overcome limitations of the `.bat` version.) */
const fs = require ("fs");
const dir = process.argv[2];
try {
const files = fs.readdirSync (dir);
files.sort ((a, b) => {
const pa = a.lastIndexOf ('.');
const pb = b.lastIndexOf ('.');
const ea = a.substring (0, (pa === -1) ? a.length : pa);
const eb = b.substring (0, (pb === -1) ? b.length : pb);
const na = parseInt (ea, 10);
const nb = parseInt (eb, 10);
if (isNaN (na) && isNaN (nb)) return Number(ea > eb) - Number(ea < eb);
if (isNaN (na)) return 1;
if (isNaN (nb)) return -1;
return Number(na > nb) - Number(na < nb);
});
let counter = 1;
files.forEach (file => {
const pos = file.lastIndexOf ('.');
const ext = file.substring ((pos === -1) ? file.length : pos);
fs.renameSync (dir + '/' + file, dir + '/' + counter + ext.toLowerCase());
++counter;
});
} catch (err) {
console.log (err);
}