私はJSを使用するのはかなり新しいので、できる限り具体的になるように努力します:)
Afghanistan.png
、Albania.png
、Algeria.png
など、国名が異なる260個の.pngファイルを含むフォルダーがあります。
次のように、各国のすべてのISOコードを含むコードを含む.jsonファイルがあります。
{ "AF": "アフガニスタン"、 "AL": "アルバニア"、 "DZ": "アルジェリア"、 ... }
.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
ファイルが信頼できるものであり、ファイル名で直接キーと値を使用しても安全であると想定しています。そうでない場合は、必ず適切にエスケープしてください!)
http://nodejs.org/api/fs.html
を通過します
1つの重要なこと-同期機能も使用できます。 (Cプログラムのように動作します)
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}`);
それでおしまい!
同期的な名前の変更には、 fs.renameSync を使用します
fs.renameSync('/path/to/Afghanistan.png', '/path/to/AF.png');