使用 node.js 重命名文件

我在使用 JS 方面还是个新手,所以我会尽量说得具体一些:)

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

  • 我有一个. json 文件,里面有一段代码,每个国家的 ISO 代码都是这样的:

{
"AF" : "Afghanistan",
"AL" : "Albania",
"DZ" : "Algeria",
...
}
  • 我想将。Png 文件,其 ISO 名称为小写。这意味着我想有下面的输入在我的文件夹与所有的 .png图像: af.pngal.pngdz.png等。

我曾试图自己研究如何使用 node.js 来完成这项工作,但是我在这里有点迷路了,如果能给我一些线索我会非常感激。

先谢谢你!

158170 次浏览

您需要使用 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文件是可信的,并且在文件名中直接使用它的键和值是安全的。如果不是这样的话,一定要正确地摆脱它们!)

  1. Readdir (path,callback)
  2. Rename (old,new,callback)

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

一个重要的事情-你也可以使用同步函数。(它将像 C 程序一样工作)

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

就是这样!

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

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

你可以访问这个 Github Repo

它有一个实际的例子