使用节点重命名文件.js

2022-08-30 04:56:48

我对使用JS很陌生,所以我会尽量具体:)

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

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

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

我试图自己研究如何使用node.js做到这一点,但我在这里有点迷茫,我会非常感激一些线索。

提前致谢!


答案 1

为此,您需要使用:http://nodejs.org/api/fs.htmlfs

特别是功能: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


答案 2

对于同步重命名,请使用 fs.renameSync

fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');