使用 node.js 重命名文件

IT技术 javascript node.js rename
2021-03-20 21:59:12

我在使用 JS 方面很新,所以我会尽量具体:)

  • 我有一个文件夹260巴纽与不同的国家名称的文件:Afghanistan.pngAlbania.pngAlgeria.png等。

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

{  
  "AF" : "阿富汗",  
  "AL" : "阿尔巴尼亚",  
  "DZ" : "阿尔及利亚",  
  ...  
}
  • 我想用小写的 ISO 名称重命名 .png 文件。这意味着我想有我在文件夹下面输入的所有.png图片: af.pngal.pngdz.png等。

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

提前致谢!

4个回答

您需要为此使用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文件是值得信赖的,并且直接在文件名中使用其键和值是安全的。如果不是这种情况,请确保正确转义它们!)

你可以只导入 .json: const obj = require('/path/to/countries.json');然后:for(var p in obj) {...}
2021-04-22 21:59:12
你可以,但是……不要。使用require 执行该文件中的代码您正在为某人引入一种可能将恶意代码注入应用程序的方法(即,通过修改 .json 文件)。阅读和使用JSON.parse()完全避免了这种情况。不要为了编写很少的代码而牺牲安全性。
2021-05-10 21:59:12
您答案的最后两行非常重要:)
2021-05-16 21:59:12
对于同步版本 fs.renameSync(oldPath, newPath);
2021-05-16 21:59:12
使用path.resolve而不是连接路径字符串更安全
2021-05-18 21:59:12

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

fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');
  1. fs.readdir(路径,回调)
  2. fs.rename(旧,新,回调)

经过 http://nodejs.org/api/fs.html

一件重要的事情 - 您也可以使用同步功能。(它会像 C 程序一样工作)

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

而已!

2021-04-25 21:59:12
有什么理由让这更受欢迎fs.rename吗?
2021-05-16 21:59:12