Umbenennen von Dateien mit node.js.


87

Ich bin ziemlich neu in der Verwendung von JS, also werde ich versuchen, so spezifisch wie möglich zu sein :)

  • Ich habe einen Ordner mit 260 PNG - Dateien mit verschiedenen Ländernamen: Afghanistan.png, Albania.png, Algeria.pngetc.

  • Ich habe eine .json-Datei mit einem Code mit allen ISO-Codes für jedes Land wie folgt:

{  
  "AF": "Afghanistan",  
  "AL": "Albanien",  
  "DZ": "Algerien",  
  ...  
}}
  • Ich möchte die PNG-Dateien mit ihrem ISO-Namen in Kleinbuchstaben umbenennen. Das bedeutet würde Ich mag die folgende Eingabe mit allen in meinem Ordner haben .pngBilder: af.png, al.png, dz.pngetc.

Ich habe versucht, selbst zu recherchieren, wie man das mit node.js macht, aber ich bin hier ein wenig verloren und würde mich über einige Hinweise sehr freuen.

Danke im Voraus!

Antworten:


147

Sie müssen dafür Folgendes verwenden fs: http://nodejs.org/api/fs.html

Und insbesondere die fs.rename()Funktion:

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

Setzen Sie dies in eine Schleife über die Schlüssel und Werte Ihres frisch gelesenen JSON-Objekts, und Sie haben ein Batch-Umbenennungsskript.

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);
        });
    }
});

(Dies setzt hier voraus, dass Ihre .jsonDatei vertrauenswürdig ist und dass es sicher ist, ihre Schlüssel und Werte direkt in Dateinamen zu verwenden. Wenn dies nicht der Fall ist, müssen Sie diese ordnungsgemäß umgehen!)


9
Die letzten
Pranav

Sie können einfach .json importieren: const obj = require('/path/to/countries.json');und dann:for(var p in obj) {...}
ViES

1
Sie könnten, aber ... nicht. Mit require führt Code in dieser Datei aus. Sie bieten jemandem die Möglichkeit, potenziell schädlichen Code in die Anwendung einzufügen (dh indem Sie die JSON-Datei ändern). Lesen und Verwenden JSON.parse()vermeidet dies insgesamt. Gehen Sie keine Kompromisse bei der Sicherheit ein, um etwas weniger Code zu schreiben.
VoteyDisciple

Es ist sicherer, path.resolve zu verwenden, als Ihre Pfadzeichenfolge zu verketten.
JulianSoto

Für synchrone Versionfs.renameSync(oldPath, newPath);
Tim

9
  1. fs.readdir (Pfad, Rückruf)
  2. fs.rename (alt, neu, Rückruf)

Durchgehen http://nodejs.org/api/fs.html

Eine wichtige Sache - Sie können auch Synchronisierungsfunktionen verwenden. (Es wird wie C-Programm funktionieren)



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.