Je suis assez nouveau dans l'utilisation de JS, je vais donc essayer d'être aussi précis que possible :)
J'ai un dossier avec 260 fichiers .png avec différents noms de pays: Afghanistan.png
, Albania.png
, Algeria.png
, etc.
J'ai un fichier .json avec un morceau de code avec tous les codes ISO pour chaque pays comme ceci:
{ "AF": "Afghanistan", "AL": "Albanie", "DZ": "Algérie", ... }
.png
images: af.png
, al.png
, dz.png
, etc.J'essayais de chercher moi-même comment faire cela avec node.js, mais je suis un peu perdu et j'apprécierais beaucoup des indices.
Merci d'avance!
Vous devrez utiliser fs
pour cela: http://nodejs.org/api/fs.html
Et en particulier la fonction fs.rename()
:
var fs = require('fs');
fs.rename('/path/to/Afghanistan.png', '/path/to/AF.png', function(err) {
if ( err ) console.log('ERROR: ' + err);
});
Mettez cela en boucle sur les clés et les valeurs de votre objet JSON fraîchement lu, et vous obtenez un script de changement de nom par lot.
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);
});
}
});
(Ceci suppose ici que votre .json
fichier est digne de confiance et qu'il est sécuritaire d'utiliser ses clés et ses valeurs directement dans les noms de fichiers. Si ce n'est pas le cas, assurez-vous de les échapper correctement!)
Traverser http://nodejs.org/api/fs.html
Une chose importante - vous pouvez également utiliser les fonctions de synchronisation. (Cela fonctionnera comme programme C)
Pour les OS Linux/Unix, vous pouvez utiliser la syntaxe Shell
const Shell = require('child_process').execSync ;
const currentPath= `/path/to/name.png`;
const newPath= `/path/to/another_name.png`;
Shell(`mv ${currentPath} ${newPath}`);
C'est ça!
Pour renommer de manière synchrone, utilisez fs.renameSync
fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');