@yaohaixiao/renames.js 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +476 -10
- package/bin/renames.js +5 -4
- package/docs/get-basename.md +23 -0
- package/docs/get-extension.md +23 -0
- package/docs/img/autoIndex-only.png +0 -0
- package/docs/img/filter.png +0 -0
- package/docs/img/format.png +0 -0
- package/docs/img/indexPadZero-false.png +0 -0
- package/docs/img/indexPadZero.png +0 -0
- package/docs/img/namesList-sortBy.png +0 -0
- package/docs/img/prefix-suffix-connector.png +0 -0
- package/docs/img/startIndex.png +0 -0
- package/docs/index.htm +823 -0
- package/docs/is-file-exists.md +25 -0
- package/docs/pad-zero.md +26 -0
- package/docs/strip-non-digit.md +26 -0
- package/lib/generate-filename.js +3 -1
- package/package.json +1 -1
- package/tests/sort-files.spec.js +2 -2
package/CHANGELOG.md
ADDED
package/README.md
CHANGED
|
@@ -6,14 +6,20 @@ renames.js - 基于 Node 的批量文件名重命名 cli 工具库。
|
|
|
6
6
|
|
|
7
7
|
- 方便快捷,配置灵活;
|
|
8
8
|
- 支持指定文件名列表数据或者文件名列表文件;
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
9
|
+
- 支持文件名自动生成(章节)索引;
|
|
10
|
+
- 支持文件名自定义过滤文件;
|
|
11
|
+
- 支持文件名自定义文件排序;
|
|
12
|
+
- 支持文件名自定义格式化名;
|
|
13
13
|
|
|
14
14
|
## Usage
|
|
15
15
|
|
|
16
|
-
renames.js
|
|
16
|
+
首先需要全局安装 renames.js,命令如下:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm i -g @yaohaixiao/renames.js
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
全局安装完成后,我们就可以在命令行使用了,renames.js 使用方式如下:
|
|
17
23
|
|
|
18
24
|
```bash
|
|
19
25
|
renames [arguments|command] [options]
|
|
@@ -154,7 +160,7 @@ filter 参数可以用来过滤 dirPath 文件夹中的文件,例如 C:\Downlo
|
|
|
154
160
|
|
|
155
161
|
```js
|
|
156
162
|
// renames.js 内部提供的功能函数
|
|
157
|
-
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension';
|
|
163
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension.js';
|
|
158
164
|
|
|
159
165
|
export default {
|
|
160
166
|
dirPath: 'C:\\Downloads',
|
|
@@ -193,7 +199,7 @@ export default {
|
|
|
193
199
|
|
|
194
200
|
```js
|
|
195
201
|
// renames.js 内部提供的功能函数
|
|
196
|
-
import getBasename from '@yaohaixiao/renames.js/lib/utils/get-basename';
|
|
202
|
+
import getBasename from '@yaohaixiao/renames.js/lib/utils/get-basename.js';
|
|
197
203
|
|
|
198
204
|
export default {
|
|
199
205
|
dirPath: 'C:\\Downloads',
|
|
@@ -222,7 +228,7 @@ format 参数可以对文件夹中的文件进行格式化,例如 C:\Downloads
|
|
|
222
228
|
|
|
223
229
|
```js
|
|
224
230
|
// renames.js 内部提供的功能函数
|
|
225
|
-
import stripNonDigit from '@yaohaixiao/renames.js/lib/utils/strip-non-digit';
|
|
231
|
+
import stripNonDigit from '@yaohaixiao/renames.js/lib/utils/strip-non-digit.js';
|
|
226
232
|
|
|
227
233
|
export default {
|
|
228
234
|
dirPath: 'C:\\Downloads',
|
|
@@ -233,7 +239,467 @@ export default {
|
|
|
233
239
|
};
|
|
234
240
|
```
|
|
235
241
|
|
|
242
|
+
### Typical Use Case
|
|
243
|
+
|
|
244
|
+
下面介绍通过调整配置 renames.config.js 的配置,实现批量重命名的一些典型的使用案例,操作起来是非常的简单的。
|
|
245
|
+
|
|
246
|
+
#### autoIndex: 'only'
|
|
247
|
+
|
|
248
|
+
将杂乱的图片库的文件名,批量重命名为自动生成数值(升序)索引(例如:1.jpg -
|
|
249
|
+
2x.jpg)的文件名,调整 renames.config.js 配置如下:
|
|
250
|
+
|
|
251
|
+
```js
|
|
252
|
+
export default {
|
|
253
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
254
|
+
namesList: '',
|
|
255
|
+
prefix: '',
|
|
256
|
+
suffix: '',
|
|
257
|
+
connector: '',
|
|
258
|
+
// 自动生成数值(升序)索引
|
|
259
|
+
autoIndex: 'only',
|
|
260
|
+
startIndex: 0,
|
|
261
|
+
indexPadZero: true,
|
|
262
|
+
indexPrefix: '第',
|
|
263
|
+
indexSuffix: '集',
|
|
264
|
+
delimiter: ':',
|
|
265
|
+
force: false,
|
|
266
|
+
extname: '',
|
|
267
|
+
filter: null,
|
|
268
|
+
sortBy: 'name',
|
|
269
|
+
order: 'desc',
|
|
270
|
+
sensitivity: 'base',
|
|
271
|
+
format: null,
|
|
272
|
+
};
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
276
|
+
|
|
277
|
+

|
|
278
|
+
|
|
279
|
+
说明:执行 renames 命令,未配置任何参数和配置参数,则执行命令时完全使用配置文件的设置。
|
|
280
|
+
|
|
281
|
+
#### startIndex
|
|
282
|
+
|
|
283
|
+
如果你是一个爱收集壁纸的人,应该会陆续收集更多的图片,我们可以使用 startIndex 在原来的索引位置继续自动生成数值索引名称,配置如下:
|
|
284
|
+
|
|
285
|
+
```js
|
|
286
|
+
export default {
|
|
287
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
288
|
+
namesList: '',
|
|
289
|
+
prefix: '',
|
|
290
|
+
suffix: '',
|
|
291
|
+
connector: '',
|
|
292
|
+
// 自动生成数值(升序)索引
|
|
293
|
+
autoIndex: 'only',
|
|
294
|
+
// 上图中文件名的索引值已经到 29.jpg,则 startIndex 的值就是 29
|
|
295
|
+
startIndex: 29,
|
|
296
|
+
indexPadZero: true,
|
|
297
|
+
indexPrefix: '第',
|
|
298
|
+
indexSuffix: '集',
|
|
299
|
+
delimiter: ':',
|
|
300
|
+
force: false,
|
|
301
|
+
extname: '',
|
|
302
|
+
filter: null,
|
|
303
|
+
sortBy: 'name',
|
|
304
|
+
order: 'desc',
|
|
305
|
+
sensitivity: 'base',
|
|
306
|
+
format: null,
|
|
307
|
+
};
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
311
|
+
|
|
312
|
+

|
|
313
|
+
|
|
314
|
+
#### indexPadZero
|
|
315
|
+
|
|
316
|
+
细心的朋友应该发现文件名 01.jpg,自动用‘0’填充。使用的就是 indexPadZero 这个配置参数。 现在将文件夹的图片文件数量增加到100以上,看看索引使用自动填充‘0’后的效果,配置如下:
|
|
317
|
+
|
|
318
|
+
```js
|
|
319
|
+
export default {
|
|
320
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
321
|
+
namesList: '',
|
|
322
|
+
prefix: '',
|
|
323
|
+
suffix: '',
|
|
324
|
+
connector: '',
|
|
325
|
+
// 自动生成数值(升序)索引
|
|
326
|
+
autoIndex: 'only',
|
|
327
|
+
startIndex: 0,
|
|
328
|
+
// 使用 '0' 自动填充
|
|
329
|
+
indexPadZero: true,
|
|
330
|
+
indexPrefix: '第',
|
|
331
|
+
indexSuffix: '集',
|
|
332
|
+
delimiter: ':',
|
|
333
|
+
force: false,
|
|
334
|
+
extname: '',
|
|
335
|
+
filter: null,
|
|
336
|
+
sortBy: 'name',
|
|
337
|
+
order: 'desc',
|
|
338
|
+
sensitivity: 'base',
|
|
339
|
+
format: null,
|
|
340
|
+
};
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
344
|
+
|
|
345
|
+

|
|
346
|
+
|
|
347
|
+
当然,如果没有强迫症,不希望文件名的长度一致,我们也可以关闭 indexPadZero,配置如下:
|
|
348
|
+
|
|
349
|
+
```js
|
|
350
|
+
export default {
|
|
351
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
352
|
+
namesList: '',
|
|
353
|
+
prefix: '',
|
|
354
|
+
suffix: '',
|
|
355
|
+
connector: '',
|
|
356
|
+
// 自动生成数值(升序)索引
|
|
357
|
+
autoIndex: 'only',
|
|
358
|
+
startIndex: 0,
|
|
359
|
+
// 使用 '0' 自动填充
|
|
360
|
+
indexPadZero: false,
|
|
361
|
+
indexPrefix: '第',
|
|
362
|
+
indexSuffix: '集',
|
|
363
|
+
delimiter: ':',
|
|
364
|
+
force: false,
|
|
365
|
+
extname: '',
|
|
366
|
+
filter: null,
|
|
367
|
+
sortBy: 'name',
|
|
368
|
+
order: 'desc',
|
|
369
|
+
sensitivity: 'base',
|
|
370
|
+
format: null,
|
|
371
|
+
};
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
375
|
+
|
|
376
|
+

|
|
377
|
+
|
|
378
|
+
可以看到,关闭后就不会使用‘0’自动填充了。
|
|
379
|
+
|
|
380
|
+
#### prefix、suffix、connector
|
|
381
|
+
|
|
382
|
+
接着我们可以对以上重命名好的文件名再继续调整,使用 prefix、suffix、connector 这3个配置参数,添加前缀和后缀,配置如下:
|
|
383
|
+
|
|
384
|
+
```js
|
|
385
|
+
export default {
|
|
386
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
387
|
+
namesList: '',
|
|
388
|
+
prefix: 'wallpaper',
|
|
389
|
+
suffix: '1080p',
|
|
390
|
+
connector: '-',
|
|
391
|
+
// 关闭自动生成数值索引(升序)
|
|
392
|
+
autoIndex: false,
|
|
393
|
+
startIndex: 0,
|
|
394
|
+
indexPadZero: true,
|
|
395
|
+
indexPrefix: '第',
|
|
396
|
+
indexSuffix: '集',
|
|
397
|
+
delimiter: ':',
|
|
398
|
+
force: false,
|
|
399
|
+
extname: '',
|
|
400
|
+
filter: null,
|
|
401
|
+
sortBy: 'name',
|
|
402
|
+
order: 'desc',
|
|
403
|
+
sensitivity: 'base',
|
|
404
|
+
format: null,
|
|
405
|
+
};
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
409
|
+
|
|
410
|
+

|
|
411
|
+
|
|
412
|
+
#### filter
|
|
413
|
+
|
|
414
|
+
接着我们使用 filter 配置参数,进一步对上面重命名的文件再操作,我们将图片中的 .png 格式的图片再批量处理以下,配置如下:
|
|
415
|
+
|
|
416
|
+
```js
|
|
417
|
+
// renames.js 内部提供的功能函数
|
|
418
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension';
|
|
419
|
+
|
|
420
|
+
export default {
|
|
421
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
422
|
+
namesList: '',
|
|
423
|
+
prefix: 'wallpaper',
|
|
424
|
+
// 添加 png 的后缀
|
|
425
|
+
suffix: 'png',
|
|
426
|
+
connector: '-',
|
|
427
|
+
// 针对 png 图片生成自动索引的文件名
|
|
428
|
+
autoIndex: 'only',
|
|
429
|
+
startIndex: 0,
|
|
430
|
+
indexPadZero: true,
|
|
431
|
+
indexPrefix: '第',
|
|
432
|
+
indexSuffix: '集',
|
|
433
|
+
delimiter: ':',
|
|
434
|
+
force: false,
|
|
435
|
+
extname: '',
|
|
436
|
+
// 过滤 .png 图片
|
|
437
|
+
filter: (files) => {
|
|
438
|
+
return files.filter((filename) => {
|
|
439
|
+
const extname = getExtension(filename);
|
|
440
|
+
return extname === '.png';
|
|
441
|
+
});
|
|
442
|
+
},
|
|
443
|
+
sortBy: 'name',
|
|
444
|
+
order: 'desc',
|
|
445
|
+
sensitivity: 'base',
|
|
446
|
+
format: null,
|
|
447
|
+
};
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
451
|
+
|
|
452
|
+

|
|
453
|
+
|
|
454
|
+
#### format
|
|
455
|
+
|
|
456
|
+
接下来,我们将使用 format 参数,将上面我们使用 filter 参数将 .png 格式的图片的后缀再改成 1080p,配置如下:
|
|
457
|
+
|
|
458
|
+
```js
|
|
459
|
+
// renames.js 内部提供的功能函数
|
|
460
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension';
|
|
461
|
+
|
|
462
|
+
export default {
|
|
463
|
+
dirPath: 'C:\\Users\\robert\\Downloads\\壁纸',
|
|
464
|
+
namesList: '',
|
|
465
|
+
// 清空前后缀的配置,我们现在的操作是仅修改原来的文件名
|
|
466
|
+
prefix: '',
|
|
467
|
+
suffix: '',
|
|
468
|
+
connector: '',
|
|
469
|
+
// 关闭自动索引也是因为需要仅修改原始的文件名
|
|
470
|
+
autoIndex: false,
|
|
471
|
+
startIndex: 0,
|
|
472
|
+
indexPadZero: true,
|
|
473
|
+
indexPrefix: '第',
|
|
474
|
+
indexSuffix: '集',
|
|
475
|
+
delimiter: ':',
|
|
476
|
+
force: false,
|
|
477
|
+
extname: '',
|
|
478
|
+
// 过滤 .png 图片,也可以配置过滤,那工具会遍历所有的文件,
|
|
479
|
+
// 为了性能,我们还是保留 filter 配置
|
|
480
|
+
filter: (files) => {
|
|
481
|
+
return files.filter((filename) => {
|
|
482
|
+
const extname = getExtension(filename);
|
|
483
|
+
return extname === '.png';
|
|
484
|
+
});
|
|
485
|
+
},
|
|
486
|
+
sortBy: 'name',
|
|
487
|
+
order: 'desc',
|
|
488
|
+
sensitivity: 'base',
|
|
489
|
+
format: (basename) => {
|
|
490
|
+
return basename.replace('png', '1080p');
|
|
491
|
+
},
|
|
492
|
+
};
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
496
|
+
|
|
497
|
+

|
|
498
|
+
|
|
499
|
+
#### nameList、sortBy
|
|
500
|
+
|
|
501
|
+
前面介绍的都是直接修改原来的文件名的方式来重命名,namesList 则可以通过外部数据将定义好的文件名结合 sortBy 将文件的顺序调整跟 namesList 中的数据一致,进行批量重命名。
|
|
502
|
+
|
|
503
|
+
例如,我下载了《达尔文游戏》这个动漫,但下载下来的文件名是这样的:
|
|
504
|
+
|
|
505
|
+
- 1-E01-1 (1).mp4
|
|
506
|
+
- 10-E09 (1).mp4
|
|
507
|
+
- 11-E10 (1).mp4
|
|
508
|
+
- 12-E11 (1).mp4
|
|
509
|
+
- 2-E01-2 (1).mp4
|
|
510
|
+
- 3-E02 (1).mp4
|
|
511
|
+
- 4-E03 (1).mp4
|
|
512
|
+
- 5-E04 (1).mp4
|
|
513
|
+
- 6-E05 (1).mp4
|
|
514
|
+
- 7-E06 (1).mp4
|
|
515
|
+
- 8-E07 (1).mp4
|
|
516
|
+
- 9-E08 (1).mp4
|
|
517
|
+
|
|
518
|
+
顺便说以下,如果直接用内置的 sortBy:
|
|
519
|
+
'name' 排序,就是以上的排序结果。而我通过 AI 获取到的《达尔文游戏》其 12集的名称如下:
|
|
520
|
+
|
|
521
|
+
- 初战
|
|
522
|
+
- 涉谷
|
|
523
|
+
- 导火索
|
|
524
|
+
- 火花
|
|
525
|
+
- 记忆(特别篇)
|
|
526
|
+
- 水葬
|
|
527
|
+
- 金刚
|
|
528
|
+
- 压碎
|
|
529
|
+
- 平稳
|
|
530
|
+
- 决斗
|
|
531
|
+
- 旧王
|
|
532
|
+
- 血盟
|
|
533
|
+
|
|
534
|
+
所以我需要通过自定义的 sortBy 函数处理以下,按 1-12 的索引值升序排序,配置如下:
|
|
535
|
+
|
|
536
|
+
```js
|
|
537
|
+
// renames.js 内部提供的功能函数
|
|
538
|
+
import getBasename from './lib/utils/get-basename.js';
|
|
539
|
+
|
|
540
|
+
export default {
|
|
541
|
+
dirPath: 'C:\\Users\\haixi\\Downloads\\达尔文游戏',
|
|
542
|
+
namesList: 'C:\\Users\\haixi\\Downloads\\names.txt',
|
|
543
|
+
// namesList: ',初战,涉谷,导火索,火花,记忆(特别篇),水葬,金刚,压碎,平稳,决斗,旧王,血盟'
|
|
544
|
+
prefix: '达尔文游戏',
|
|
545
|
+
suffix: '1080p',
|
|
546
|
+
connector: '-',
|
|
547
|
+
autoIndex: true,
|
|
548
|
+
startIndex: 0,
|
|
549
|
+
indexPadZero: true,
|
|
550
|
+
indexPrefix: '第',
|
|
551
|
+
indexSuffix: '集',
|
|
552
|
+
delimiter: ':',
|
|
553
|
+
force: false,
|
|
554
|
+
extname: '',
|
|
555
|
+
filter: null,
|
|
556
|
+
// 使用自定义的排序方式
|
|
557
|
+
sortBy: (files) => {
|
|
558
|
+
return files.sort((prev, next) => {
|
|
559
|
+
const pattern = /-(.*)/;
|
|
560
|
+
// 保留文件名中的第一个字符,也就是索引值
|
|
561
|
+
const prevIndex = getBasename(prev).replace(pattern, '');
|
|
562
|
+
const nextIndex = getBasename(next).replace(pattern, '');
|
|
563
|
+
|
|
564
|
+
// 升序排列
|
|
565
|
+
return Number(prevIndex) - Number(nextIndex);
|
|
566
|
+
});
|
|
567
|
+
},
|
|
568
|
+
// 使用自定义排序函数后 order 和 sensitivity 就没有作用了
|
|
569
|
+
order: 'asc',
|
|
570
|
+
sensitivity: 'base',
|
|
571
|
+
format: null,
|
|
572
|
+
};
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
然后在命令行工具执行 renames 命令,如下图:
|
|
576
|
+
|
|
577
|
+

|
|
578
|
+
|
|
579
|
+
**PS**: 这是我当初开发 renames.js 的主要目的,重命名下载的视频文件名!
|
|
580
|
+
|
|
581
|
+
## API Documentation
|
|
582
|
+
|
|
583
|
+
renames.js 除了作为 cli 工具可以在命令行直接使用外,也额外提供了一些基础的处理获取文件信息的功能函数模块。
|
|
584
|
+
|
|
585
|
+
### getBasename(filename) ⇒ <code>string</code>
|
|
586
|
+
|
|
587
|
+
getBasename() 方法用来获取文件名中不含扩展名的字符串。
|
|
588
|
+
|
|
589
|
+
**Kind**: global function **Returns**:
|
|
590
|
+
<code>string</code> - - 返回文件名中去掉扩展名部分的字符串
|
|
591
|
+
|
|
592
|
+
| Param | Type | Description |
|
|
593
|
+
| -------- | ------------------- | -------------------- |
|
|
594
|
+
| filename | <code>string</code> | 文件名(路径)字符串 |
|
|
595
|
+
|
|
596
|
+
#### Usage
|
|
597
|
+
|
|
598
|
+
```js
|
|
599
|
+
import getBasename from '@yaohaixiao/renames.js/lib/utils/get-basename.js';
|
|
600
|
+
|
|
601
|
+
const filename = '1-E01-1 (1).mp4';
|
|
602
|
+
const basename = getBasename(filename);
|
|
603
|
+
|
|
604
|
+
console.log(basename); // -> '1-E01-1 (1)'
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
### getExtension(filename) ⇒ <code>string</code>
|
|
608
|
+
|
|
609
|
+
getExtension() 方法用来获取文件名中的扩展名部分字符串(含.)。
|
|
610
|
+
|
|
611
|
+
**Kind**: global function **Returns**:
|
|
612
|
+
<code>string</code> - - 返回文件名中扩展名部分的字符串,例如:'.jpg'
|
|
613
|
+
|
|
614
|
+
| Param | Type | Description |
|
|
615
|
+
| -------- | ------------------- | -------------------- |
|
|
616
|
+
| filename | <code>string</code> | 文件名(路径)字符串 |
|
|
617
|
+
|
|
618
|
+
#### Usage
|
|
619
|
+
|
|
620
|
+
```js
|
|
621
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension.js';
|
|
622
|
+
|
|
623
|
+
const filename = '1-E01-1 (1).mp4';
|
|
624
|
+
const extname = getExtension(filename);
|
|
625
|
+
|
|
626
|
+
console.log(extname); // -> '.mp4'
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
### isFileExists(filePath, [basePath]) ⇒ <code>boolean</code>
|
|
630
|
+
|
|
631
|
+
isFileExists() 方法用来同步检测文件是否存在,如果存在,返回 true,否则返回 false。
|
|
632
|
+
|
|
633
|
+
**Kind**: global function **Returns**:
|
|
634
|
+
<code>boolean</code> - - 文件存在返回 true,否则返回 false
|
|
635
|
+
|
|
636
|
+
| Param | Type | Default | Description |
|
|
637
|
+
| ---------- | ------------------- | ------------------------------------- | --------------------------------- |
|
|
638
|
+
| filePath | <code>string</code> | | 检测的文件路径 |
|
|
639
|
+
| [basePath] | <code>string</code> | <code>"''"</code> | 可选,基础路径。. Default is `''` |
|
|
640
|
+
|
|
641
|
+
#### Usage
|
|
642
|
+
|
|
643
|
+
```js
|
|
644
|
+
import isFileExists from '@yaohaixiao/renames.js/lib/utils/is-file-exists.js';
|
|
645
|
+
|
|
646
|
+
const filename = '1-E01-1 (1).mp4';
|
|
647
|
+
const basePath = 'C:\Users\haixi\Downloads\达尔文游戏';
|
|
648
|
+
|
|
649
|
+
// console.log(isFileExists('C:\Users\haixi\Downloads\达尔文游戏\1-E01-1 (1).mp4'))
|
|
650
|
+
console.log(isFileExists(filename, basePath)); // -> true
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
### padZero(val, [length]) ⇒ <code>string</code>
|
|
654
|
+
|
|
655
|
+
padZero() 方法用来处理对数字/字符串补零,前置补‘0’,确保返回指定长度的字符串。
|
|
656
|
+
|
|
657
|
+
**Kind**: global function **Returns**:
|
|
658
|
+
<code>string</code> - - 返回补零后的字符串
|
|
659
|
+
|
|
660
|
+
| Param | Type | Default | Description |
|
|
661
|
+
| -------- | ------------------------------------------ | -------------- | ------------------------------------------------------------ |
|
|
662
|
+
| val | <code>number</code> \| <code>string</code> | | 要补零的数字或字符串(如 27、'27') |
|
|
663
|
+
| [length] | <code>number</code> | <code>2</code> | 可选,目标总长度(如 3 → '027',4 → '0027'). Default is `2` |
|
|
664
|
+
|
|
665
|
+
#### Usage
|
|
666
|
+
|
|
667
|
+
```js
|
|
668
|
+
import getBasename from '@yaohaixiao/renames.js/lib/utils/get-basename.js';
|
|
669
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension.js';
|
|
670
|
+
import padZero from '@yaohaixiao/renames.js/lib/utils/pad-zero.js';
|
|
671
|
+
|
|
672
|
+
const filename = '1.mp4';
|
|
673
|
+
const finalFileName = `${padZero(getBasename(filename), 3)}${getExtension(filename)}`;
|
|
674
|
+
|
|
675
|
+
console.log(finalFileName); // -> '001.mp4'
|
|
676
|
+
```
|
|
677
|
+
|
|
678
|
+
### stripNonDigit(str) ⇒ <code>string</code>
|
|
679
|
+
|
|
680
|
+
stripNonDigit(str) 方法用来移除文本中所有非数值的文本,返回移除纯数值的字符串。
|
|
681
|
+
|
|
682
|
+
**Kind**: global function **Returns**:
|
|
683
|
+
<code>string</code> - - 返回移除非数值的字符串
|
|
684
|
+
|
|
685
|
+
| Param | Type | Description |
|
|
686
|
+
| ----- | ------------------- | ------------------ |
|
|
687
|
+
| str | <code>string</code> | 文件名的文本字符串 |
|
|
688
|
+
|
|
689
|
+
#### Usage
|
|
690
|
+
|
|
691
|
+
```js
|
|
692
|
+
import getBasename from '@yaohaixiao/renames.js/lib/utils/get-basename.js';
|
|
693
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension.js';
|
|
694
|
+
import stripNonDigit from '@yaohaixiao/renames.js/lib/utils/strip-non-digit.js';
|
|
695
|
+
|
|
696
|
+
const filename = '第01集:初战';
|
|
697
|
+
const basename = getBasename(filename);
|
|
698
|
+
const extname = getExtension(filename);
|
|
699
|
+
|
|
700
|
+
console.log(`${stripNonDigit(basename)}${extname}`); // -> '01.mp4'
|
|
701
|
+
```
|
|
702
|
+
|
|
236
703
|
## License
|
|
237
704
|
|
|
238
|
-
Licensed under
|
|
239
|
-
[MIT License](http://opensource.org/licenses/mit-license.html).
|
|
705
|
+
Licensed under [MIT License](http://opensource.org/licenses/mit-license.html).
|
package/bin/renames.js
CHANGED
|
@@ -162,8 +162,7 @@ const getCommonOptions = () => [
|
|
|
162
162
|
{
|
|
163
163
|
flags: '--sort, --sortBy <sortBy>',
|
|
164
164
|
description:
|
|
165
|
-
'可选,排序类型,可选项:name、type、size、birthtime 和 modify-time',
|
|
166
|
-
defaultValue: DEFAULT_SORT,
|
|
165
|
+
'可选,排序类型,可选项:name、type、size、birthtime 和 modify-time(default:name)',
|
|
167
166
|
},
|
|
168
167
|
{
|
|
169
168
|
flags: '--order <order>',
|
|
@@ -347,10 +346,12 @@ mainCommander
|
|
|
347
346
|
// 获取最终的文件夹路径
|
|
348
347
|
const finalDirPath = await getFinalDirPath(dirPath, config);
|
|
349
348
|
|
|
350
|
-
//
|
|
349
|
+
// 合并命令行输入的配置参数
|
|
351
350
|
const finalOptions = { ...config, ...options };
|
|
352
351
|
|
|
353
|
-
|
|
352
|
+
if (options.namesList) {
|
|
353
|
+
finalOptions.namesList = processNameList(options.namesList);
|
|
354
|
+
}
|
|
354
355
|
|
|
355
356
|
if (finalDirPath) {
|
|
356
357
|
// 执行重命名
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<a name="getBasename"></a>
|
|
2
|
+
|
|
3
|
+
## getBasename(filename) ⇒ <code>string</code>
|
|
4
|
+
|
|
5
|
+
getBasename() 方法用来获取文件名中不含扩展名的字符串
|
|
6
|
+
|
|
7
|
+
**Kind**: global function **Returns**:
|
|
8
|
+
<code>string</code> - - 返回文件名中去掉扩展名部分的字符串
|
|
9
|
+
|
|
10
|
+
| Param | Type | Description |
|
|
11
|
+
| -------- | ------------------- | -------------------- |
|
|
12
|
+
| filename | <code>string</code> | 文件名(路径)字符串 |
|
|
13
|
+
|
|
14
|
+
#### Usage
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
import getBasename from '@yaohaixiao/renames.js/lib/utils/get-basename.js';
|
|
18
|
+
|
|
19
|
+
const filename = '1-E01-1 (1).mp4';
|
|
20
|
+
const basename = getBasename(filename);
|
|
21
|
+
|
|
22
|
+
console.log(basename); // -> '1-E01-1 (1)'
|
|
23
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<a name="getExtension"></a>
|
|
2
|
+
|
|
3
|
+
### getExtension(filename) ⇒ <code>string</code>
|
|
4
|
+
|
|
5
|
+
getExtension() 方法用来获取文件名中的扩展名部分字符串(含.)。
|
|
6
|
+
|
|
7
|
+
**Kind**: global function **Returns**:
|
|
8
|
+
<code>string</code> - - 返回文件名中扩展名部分的字符串,例如:'.jpg'
|
|
9
|
+
|
|
10
|
+
| Param | Type | Description |
|
|
11
|
+
| -------- | ------------------- | -------------------- |
|
|
12
|
+
| filename | <code>string</code> | 文件名(路径)字符串 |
|
|
13
|
+
|
|
14
|
+
#### Usage
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
import getExtension from '@yaohaixiao/renames.js/lib/utils/get-extension.js';
|
|
18
|
+
|
|
19
|
+
const filename = '1-E01-1 (1).mp4';
|
|
20
|
+
const extname = getExtension(filename);
|
|
21
|
+
|
|
22
|
+
console.log(extname); // -> '.mp4'
|
|
23
|
+
```
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|