使用node.js重命名文件

我在使用JS相当新,所以我会尽量具体,因为我可以:)

  • 我有一个具有不同国家名称的260个.png文件的文件夹: Afghanistan.pngAlbania.pngAlbania.png

  • 我有一个.json文件和一段代码,每个国家的ISO代码都是这样的:

 {  
   “AF”:“阿富汗”,  
   “AL”:“阿尔巴尼亚”,  
   “DZ”:“阿尔及利亚”,  
   ...  
 }
  • 我想用小写的ISO名称来重命名.png文件。 这意味着我想在我的文件夹中有所有的.png图像input: af.pngal.pngdz.png

我试图自己研究如何用node.js做到这一点,但我有点迷路了,我会欣赏一些线索。

提前致谢!

你需要使用fs : http : //nodejs.org/api/fs.html

特别是fs.rename()函数:

 var fs = require('fs'); fs.rename('/path/to/Afghanistan.png', '/path/to/AF.png', function(err) { if ( err ) console.log('ERROR: ' + err); }); 

把它放在刚刚读取的JSON对象的键和值的循环中,并且你有一个批重命名脚本。

 fs.readFile('/path/to/countries.json', function(error, data) { if (error) { console.log(error); return; } var obj = JSON.parse(data); for(var p in yourObject) { fs.rename('/path/to/' + obj[p] + '.png', '/path/to/' + p + '.png', function(err) { if ( err ) console.log('ERROR: ' + err); }); } }); 

(这里假定您的.json文件是可信的,并且直接在文件名中使用它的键和值是安全的。如果不是这种情况,一定要正确地转义它们!)

  1. fs.readdir(path,callback)
  2. fs.rename(旧,新,callback)

浏览http://nodejs.org/api/fs.html

一件重要的事情 – 你也可以使用同步function。 (它会像C程序一样工作)

对于linux / unix操作系统,您可以使用shell语法

 const shell = require('child_process').execSync ; const currentPath= `/path/to/name.png`; const newPath= `/path/to/another_name.png`; shell(`mv ${currentPath} ${newPath}`); 

而已!