使用node.js重命名文件

Renaming files using node.js

本文关键字:文件 重命名 js node 使用      更新时间:2023-09-26

我有一个包含260个不同国家名称的.png文件的文件夹:Afghanistan.png, Albania.png, Algeria.png

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

{  
  "AF" : "Afghanistan",  
  "AL" : "Albania",  
  "DZ" : "Algeria",  
  ...  
}

我想用小写的ISO名称重命名。png文件。这意味着我想在我的文件夹中输入以下所有.png图像:af.png, al.png, dz.png

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

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

同步重命名使用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}`);

就是这样!

这是重命名任意目录下的文件的脚本的更新版本;即=比;"C: ' '用户用户' Downloads"

const fs = require('fs');
// current file name
const fileName = 'C:''Users''user''Downloads''oldFileName.jpg';
// new file name
const newFileName = 'C:''Users''user''Downloads''newFileName.jpg';
fs.rename(fileName, newFileName, function(err) {
    if (err) throw err;
    console.log('File Renamed!');
});

此脚本使用特定的路径和文件名重命名文件,在本例中为"C:'Users'user'Downloads'oldFileName.jpg" C: ' '用户下载' '用户newFileName.jpg "使用"fs"模块。"rename"函数接受当前文件名、新文件名和一个回调函数,该回调函数将在文件重命名后调用。如果有错误,它将抛出一个错误。否则,它将打印"文件重命名!"到控制台