2014-03-19 120 views
34

我在使用JS挺新的,所以我會盡量具體,我可以:)如何使用Node.js重命名文件

  • 我有一個文件夾與260個不同的國名.png文件:Afghanistan.pngAlbania.pngAlgeria.png

  • 我有一段代碼,像這樣對每個國家的所有ISO代碼的以.json文件:

 
{ 
    "AF" : "Afghanistan", 
    "AL" : "Albania", 
    "DZ" : "Algeria", 
    ... 
} 
  • 我想用小寫的ISO名稱來重命名.png文件。這意味着我想有我夾中的以下輸入與所有的.png圖片: af.pngal.pngdz.png

我試圖通過研究自己如何與node.js的做到這一點,但我在這裏有點迷路,我會很感激一些線索。

在此先感謝!

回答

61

你需要使用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文件是值得信賴的,它是安全的,直接在文件名中使用它的鍵和值。如果不是這種情況,一定要正確逃生者!)

+4

最後2行的答案非常重要:) – Pranav

4
  1. fs.readdir(路徑,回調)
  2. fs.rename(舊,新,回調)

通過http://nodejs.org/api/fs.html

0123轉到

一件重要的事情 - 你也可以使用同步功能。 (它會像C程序)

0

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

這就是它!