2014-03-19 21 views
34

Ich bin ganz neu in mit JS verwenden, also werde ich versuchen, so genau zu sein, wie ichUmbenennen von Dateien node.js

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

  • ich mit allen ISO-Codes für jedes Land, wie dies eine .json Datei mit einem Stück Code haben:

 
{ 
    "AF" : "Afghanistan", 
    "AL" : "Albania", 
    "DZ" : "Algeria", 
    ... 
} 
  • Ich möchte die. Png-Dateien mit ihrem ISO-Namen in Low-Case umbenennen. Das heißt, ich möchte folgende Eingabe mit allen .png Bilder in meinem Ordner haben: af.png, al.png, dz.png usw.

Ich war für die Forschung von mir versucht, wie dies zu tun mit node.js, aber ich bin ein wenig verloren hier und ich würde einige Hinweise sehr schätzen.

Vielen Dank im Voraus!

Antwort

61

Sie müssen fs dafür verwenden: 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, dass in einer Schleife über Ihre frisch lesen JSON-Objekt der Schlüssel und Werte, 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 voraus, hier, dass Ihre .json Datei vertrauenswürdig ist und dass es sicher ist, um seine Schlüssel und Werte direkt in Dateinamen. Wenn das nicht der Fall ist, sollten Sie diejenigen, richtig zu entkommen!)

+4

letzten 2 Zeilen Ihrer Antwort sind sehr wichtig :) – Pranav

4
  1. fs.readdir (path, Rückruf)
  2. fs.rename (alt, neu, Rückruf)

gehen Sie durch http://nodejs.org/api/fs.html

Eine wichtige Sache - Sie können auch Sync-Funktionen verwenden. (Es wird wie C-Programm arbeiten)

0

für Linux/Unix OS, können Sie die Shell-Syntax verwenden

const shell = require('child_process').execSync ; 

const currentPath= `/path/to/name.png`; 
const newPath= `/path/to/another_name.png`; 

shell(`mv ${currentPath} ${newPath}`); 

Das ist es!