web-dev-qa-db-ja.com

node.jsを使用してファイルの名前を変更する

私はJSを使用するのはかなり新しいので、できる限り具体的になるように努力します:)

  • Afghanistan.pngAlbania.pngAlgeria.pngなど、国名が異なる260個の.pngファイルを含むフォルダーがあります。

  • 次のように、各国のすべてのISOコードを含むコードを含む.jsonファイルがあります。

 {
 "AF": "アフガニスタン"、
 "AL": "アルバニア"、
 "DZ": "アルジェリア"、
 ... 
} 
  • .pngファイルの名前を小文字のISO名に変更したいと思います。つまり、すべての.pngイメージを含むフォルダーに次の入力が必要です:af.pngal.pngdz.pngなど。

Node.jsでこれを行う方法を自分で研究しようとしていましたが、ここで少し迷子になり、いくつかの手がかりを高く評価します。

前もって感謝します!

71
jlalovi

そのために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ファイルが信頼できるものであり、ファイル名で直接キーと値を使用しても安全であると想定しています。そうでない場合は、必ず適切にエスケープしてください!)

118
VoteyDisciple
  1. fs.readdir(パス、コールバック)
  2. fs.rename(old、new、callback)

http://nodejs.org/api/fs.htmlを通過します

1つの重要なこと-同期機能も使用できます。 (Cプログラムのように動作します)

8
Pranav

linux/unix OSの場合、シェル構文を使用できます

const Shell = require('child_process').execSync ; 

const currentPath= `/path/to/name.png`;
const newPath= `/path/to/another_name.png`;

Shell(`mv ${currentPath} ${newPath}`);

それでおしまい!

0
Abdennour TOUMI

同期的な名前の変更には、 fs.renameSync を使用します

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