找回密码
 立即注册
查看: 400|回复: 0

[笔记] nodejs 重命名文件

[复制链接]
发表于 2021-9-12 17:50 | 显示全部楼层 |阅读模式
  1. const fs = require('fs');
  2. var  data = process.argv.splice(2);
  3. // 1. 定义两个工具函数
  4. // 获取指定目录路径下的所有文件名
  5. const getFileNames = path => {
  6.     // 使用readdir获取指定目录下的所有文件名
  7.     return fs.readdirSync(path);;
  8. }

  9. // 根据指定字符截取文件名,返回截取后的字段
  10. const getFileSuffix =  (fileName, splitChar) => {
  11.     if(fileName){
  12. // 取字符第一次出现的位置
  13. const first = fileName.lastIndexOf(splitChar);
  14. // 取字符最后一次出现的位置(根据需要选择)
  15. // const first = fileName.lastIndexOf(splitChar);

  16. const namelength = fileName.length; //取到文件名长度
  17. return [fileName.substring(0,first ),fileName.substring(first + 1, namelength)];; //截取获得后缀名
  18.     }
  19.    
  20. }
  21. // 2. 定义目录
  22. const dirName = data[0];
  23. // 3. 读取与改写
  24. let files = getFileNames(dirName);
  25. var json={};
  26. files.forEach((item, i) => {
  27.     // 这里对旧名操作获取新名
  28.     let arrName = getFileSuffix(item, ".")
  29.     var songName = arrName[0];
  30.     var songSuffixName = arrName[1];
  31.     if(!json[songName]){
  32.         json[songName]={
  33.             "ImgPath":null,
  34.             "VideoPath":null,
  35.             "InfoPath":null,
  36.             "SrtPath":null
  37.         }
  38.     }
  39.     for (var key in json) {
  40.         if (Object.hasOwnProperty.call(json, key)&&key==songName) {
  41.             if(songSuffixName=="jpg"){
  42.                 json[key]["ImgPath"] = item;
  43.             }
  44.             else if(songSuffixName=="mp4")
  45.             {
  46.                 json[key]["VideoPath"] = item;
  47.             }
  48.             else if(songSuffixName=="json")
  49.             {
  50.                 json[key]["InfoPath"] = item;
  51.             }
  52.             else if(songSuffixName=="srt")
  53.             {
  54.                 json[key]["SrtPath"] = item;
  55.             }
  56.             
  57.         }
  58.     }
  59.     if(arrName[1]=="webm"){

  60.         console.log(arrName[0]);
  61.          //使用rename方法进行重命名
  62.         //把webm的重新命名为mp4
  63.         fs.rename(dirName+"/"+item, dirName+"/"+arrName[0]+".mp4", (err) => {
  64.             if (err) throw err;
  65.             console.log('重命名完成'+dirName+"/"+arrName[0]+".mp4");
  66.         });
  67.     }
  68.    
  69. })
  70. console.log(JSON.stringify(json));
  71. //设置起始索引
  72. var startPrefixNum = 74;
  73. for (const key in json) {
  74.     if (Object.hasOwnProperty.call(json, key)) {
  75.         const element = json[key];


  76.         for (const key2 in element) {
  77.             if (Object.hasOwnProperty.call(element, key2)) {
  78.                 const element2 = element[key2];
  79.                 if(element2){
  80.                     var splitName =getFileSuffix(element2,".");
  81.                     var prefixName = splitName[0];
  82.                     var suffixName = splitName[1];
  83.                     if(suffixName=="mp4"){
  84.                         fs.rename(dirName+"/"+element2, dirName+"/"+startPrefixNum+".mp4", ((dirName,startPrefixNum,err) => {
  85.                             if (err) throw err;
  86.                             console.log('重命名完成'+dirName+"/"+startPrefixNum+".mp4");
  87.                         }).bind(this,dirName,startPrefixNum));
  88.                     }
  89.                     else{
  90.                         fs.rename(dirName+"/"+element2, dirName+"/"+startPrefixNum+element2, (err) => {
  91.                             if (err) throw err;
  92.                             console.log('重命名完成'+dirName+"/"+startPrefixNum+element2);
  93.                         });
  94.                     }
  95.                 }
  96.                
  97.                
  98.             }
  99.         }
  100.         startPrefixNum++;
  101.     }
  102. }
复制代码
输入node 脚本 路径
把视频信息分组 并按照序号重命名
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-16 13:16 , Processed in 0.092625 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表