नोड.जेएस का उपयोग करके फ़ाइलों का नाम बदलना


90

मैं JS का उपयोग करने में काफी नया हूं, इसलिए मैं जितना संभव हो उतना विशिष्ट बनने की कोशिश करूंगा :)

  • मैं अलग देश के नाम के साथ 260 .png फ़ाइलें के साथ एक फ़ोल्डर है: Afghanistan.png, Albania.png, Algeria.png, आदि

  • मेरे पास एक .json फ़ाइल है जिसमें इस तरह के प्रत्येक देश के लिए सभी ISO कोड के साथ कोड का एक टुकड़ा है:

{  
  "एएफ": "अफगानिस्तान",  
  "एएलएन:" अल्बानिया ",  
  "डीजेड": "अल्जीरिया",  
  ...  
}
  • मैं निम्न स्थिति में उनके ISO नाम के साथ .png फ़ाइलों का नाम बदलना चाहूंगा। इसका मतलब है कि मैं सभी के साथ अपने फ़ोल्डर में निम्न इनपुट करना चाहते हैं .pngछवियों: af.png, al.png, dz.png, आदि

मैं अपने आप से अनुसंधान करने की कोशिश कर रहा था कि यह नोड के साथ कैसे किया जाए। जेएस, लेकिन मैं यहां थोड़ा खो गया हूं और मैं कुछ सुरागों की सराहना करूंगा।

अग्रिम में धन्यवाद!

जवाबों:


153

आपको इसके लिए उपयोग करने की आवश्यकता होगी 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माना जाता है कि आपकी फ़ाइल भरोसेमंद है और यह सीधे फ़ाइल नाम में अपनी कुंजियों और मूल्यों का उपयोग करने के लिए सुरक्षित है। यदि ऐसा नहीं है, तो उन लोगों से ठीक से बचना सुनिश्चित करें!)


9
आपके उत्तर की अंतिम 2 पंक्तियाँ बहुत महत्वपूर्ण हैं :)
प्रणव

आप अभी आयात कर सकते हैं .json: const obj = require('/path/to/countries.json');और फिर:for(var p in obj) {...}
ViES

1
आप कर सकते हैं, लेकिन ... नहीं। का उपयोग करते हुए require निष्पादित कोड है कि फाइल में। आप किसी के लिए संभावित रूप से एप्लिकेशन में दुर्भावनापूर्ण कोड इंजेक्ट करने का एक तरीका पेश कर रहे हैं (यानी, .json फ़ाइल को संशोधित करके)। पढ़ने और उपयोग करने JSON.parse()से पूरी तरह से बचा जाता है। बहुत कम कोड लिखने के लिए सुरक्षा से समझौता न करें।
वोटडेयिसिपल

अपने पथ स्ट्रिंग को बदलने के बजाय path.resolve का उपयोग करना अधिक सुरक्षित है ।
जुलियानसोटो

तुल्यकालिक संस्करण के लिएfs.renameSync(oldPath, newPath);
टिम

9
  1. fs.readdir (पथ, कॉलबैक)
  2. fs.rename (पुराने, नए, कॉलबैक)

के माध्यम से जाना http://nodejs.org/api/fs.html

एक महत्वपूर्ण बात - आप सिंक फ़ंक्शंस का भी उपयोग कर सकते हैं। (यह सी प्रोग्राम की तरह काम करेगा)



2

लिनक्स / यूनिक्स ओएस के लिए, आप शेल सिंटैक्स का उपयोग कर सकते हैं

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

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

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

बस!


1
क्या कोई कारण है कि इसे क्यों पसंद किया जाएगा fs.rename?
इलेक्ट्रोविर

यह सिंक्रोनस है - लेकिन इसमें नोडज का
Ole
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.