使用node.js重命名文件

时间:2014-03-19 11:35:10

标签: javascript node.js rename

我在使用JS时很新,所以我会尝试尽可能具体:)

  • 我有一个包含260个.png文件的文件夹,其中包含不同的国家/地区名称:Afghanistan.pngAlbania.pngAlgeria.png等。

  • 我有一个.json文件,其中包含一段代码,其中包含每个国家/地区的所有ISO代码,如下所示:

{  
  "AF" : "Afghanistan",  
  "AL" : "Albania",  
  "DZ" : "Algeria",  
  ...  
}
  • 我想用小写的ISO名称重命名.png文件。这意味着我希望在我的文件夹中包含所有.png图像的以下输入: af.pngal.pngdz.png

我试图自己研究如何用node.js做这个,但我在这里有点迷失,我会很感激一些线索。

提前致谢!

4 个答案:

答案 0 :(得分:110)

您需要使用fshttp://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)

  1. fs.readdir(路径,回调)
  2. fs.rename(旧,新,回调)
  3. 浏览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');