我在使用JS时很新,所以我会尝试尽可能具体:)
我有一个包含260个.png文件的文件夹,其中包含不同的国家/地区名称:Afghanistan.png
,Albania.png
,Algeria.png
等。
我有一个.json文件,其中包含一段代码,其中包含每个国家/地区的所有ISO代码,如下所示:
{ "AF" : "Afghanistan", "AL" : "Albania", "DZ" : "Algeria", ... }
.png
图像的以下输入:
af.png
,al.png
,dz.png
等我试图自己研究如何用node.js做这个,但我在这里有点迷失,我会很感激一些线索。
提前致谢!
答案 0 :(得分:110)
您需要使用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 obj) {
fs.rename('/path/to/' + obj[p] + '.png', '/path/to/' + p + '.png', function(err) {
if ( err ) console.log('ERROR: ' + err);
});
}
});
(这里假设你的.json
文件是值得信赖的,并且可以直接在文件名中使用它的键和值。如果不是这样,请务必正确地逃避它们!)
答案 1 :(得分:8)
浏览http://nodejs.org/api/fs.html
一件重要的事情 - 您也可以使用同步功能。 (它将像C程序一样工作)
答案 2 :(得分:2)
对于linux / unix OS,您可以使用shell语法
const shell = require('child_process').execSync ;
const currentPath= `/path/to/name.png`;
const newPath= `/path/to/another_name.png`;
shell(`mv ${currentPath} ${newPath}`);
就是这样!
答案 3 :(得分:0)
对于同步重命名,请使用fs.renameSync
fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');