使用node.js重命名文件
我在使用JS相当新,所以我会尽量具体,因为我可以:)
-
我有一个具有不同国家名称的260个.png文件的文件夹:
Afghanistan.png
,Albania.png
,Albania.png
等 -
我有一个.json文件和一段代码,每个国家的ISO代码都是这样的:
{ “AF”:“阿富汗”, “AL”:“阿尔巴尼亚”, “DZ”:“阿尔及利亚”, ... }
- 我想用小写的ISO名称来重命名.png文件。 这意味着我想在我的文件夹中有所有的
.png
图像input:af.png
,al.png
,dz.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
文件是可信的,并且直接在文件名中使用它的键和值是安全的。如果不是这种情况,一定要正确地转义它们!)
- fs.readdir(path,callback)
- 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}`);
而已!