Guest User

Untitled

a guest
Oct 22nd, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. const fs = require("fs");
  2. const _ = require("lodash");
  3.  
  4. const videosFolder = "C:\\Users\\___\\__DIR__";
  5. const namesFile = "C:\\Users\\___\\__DIR__\\docs\\names.txt";
  6.  
  7. const fileNamePrefix = "PREFIX_";
  8.  
  9. if (!fs.existsSync(namesFile)) {
  10. console.log("could not find names file", namesFile);
  11. return;
  12. }
  13. console.log("found names file", namesFile);
  14.  
  15. //read whole data from file
  16. var names = fs.readFileSync(namesFile, "utf8");
  17.  
  18. //filenames as array
  19. var names = _.split(names, "\r\n");
  20.  
  21. //number file names
  22. var names = names.map((name, idx) => {
  23. idx++; //index starts with 0, our names must start with 1
  24. var sIdx = (idx < 10 ? "00" : idx < 100 ? "0" : "") + idx + ". ";
  25. return sIdx + name;
  26. });
  27. console.log(names);
  28.  
  29. //read files from given folder
  30. var files = fs.readdirSync(videosFolder);
  31.  
  32. //optional - correct filenames
  33. // files.forEach(file => {
  34. // var suffix = file.split(fileNamePrefix)[1];
  35. // if (!suffix) return;
  36. // suffix = suffix.split(".");
  37. // var idx = Number.parseInt(suffix[0]);
  38. // if (idx < 45) return;
  39. // console.log(file, " -> ", fileNamePrefix + (idx - 1) + "." + suffix[1]);
  40. // fs.renameSync(
  41. // videosFolder + "\\" + file,
  42. // videosFolder + "\\" + fileNamePrefix + (idx - 1) + "." + suffix[1]
  43. // );
  44. // });
  45.  
  46. //prepare file names map { old, new}
  47. var namesMap = files.map(file => {
  48. var suffix = file.split(fileNamePrefix)[1];
  49. if (!suffix) return;
  50. suffix = suffix.split(".");
  51. var idx = Number.parseInt(suffix[0]);
  52. // console.log(file, " -> ", names[idx] + "." + suffix[1]);
  53. return { old: file, new: names[idx] + "." + suffix[1] };
  54. });
  55. console.log(namesMap);
  56.  
  57. namesMap.forEach(map => {
  58. if (!map) return;
  59. //console.log(map); //print out the map
  60.  
  61. //logic to rename the files
  62. fs.renameSync(videosFolder + "\\" + map.old, videosFolder + "\\" + map.new);
  63. });
  64. console.log("files renamed");
Add Comment
Please, Sign In to add comment