javascript 使用node.js重命名文件

kdfy810k  于 2022-12-02  发布在  Java
关注(0)|答案(5)|浏览(210)

我是相当新的使用JS,所以我会尽量具体:)

  • 我有一个文件夹,其中包含260个.png文件,这些文件具有不同的国家/地区名称:Afghanistan.pngAlbania.pngAlgeria.png等等。
  • 我有一个.json文件,其中包含一段代码,其中包含每个国家的所有ISO代码,如下所示:
{  
  "AF" : "Afghanistan",  
  "AL" : "Albania",  
  "DZ" : "Algeria",  
  ...  
}
  • 我想用小写的ISO名称来重命名.png文件。这意味着我想在我的文件夹中输入以下内容和所有的.png图像:af.pngal.pngdz.png等等。

我试着自己研究如何使用node.js来实现这一点,但我在这里有点迷失,我会非常感激一些线索。
提前感谢!

j7dteeu8

j7dteeu81#

为此,您需要使用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);
        });
    }
});

(This这里假设您的.json文件是可信的,并且在文件名中直接使用它的键和值是安全的。如果不是这样,请确保正确地对它们进行转义!)

2eafrhcq

2eafrhcq2#

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

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

wh6knrhe3#

  1. fs.readdir(路径,回调)
  2. fs.rename(旧,新,回调)
    通过http://nodejs.org/api/fs.html
    一件重要的事情-你也可以使用同步函数。(它将像C程序一样工作)
zf9nrax1

zf9nrax14#

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

就是这样!

sg24os4d

sg24os4d5#

您可以访问此Github Repo
它有一个示例

相关问题