নোড.জেএস ব্যবহার করে ফাইলগুলির নাম পরিবর্তন করা


90

আমি জেএস ব্যবহারে বেশ নতুন, তাই আমি যথাসাধ্য সুনির্দিষ্ট হওয়ার চেষ্টা করব :)

  • আমি বিভিন্ন দেশ নামের সাথে 260 .png ফাইল একটি ফোল্ডার আছে: Afghanistan.png, Albania.png, Algeria.png, ইত্যাদি

  • আমার কাছে প্রতিটি দেশের জন্য সমস্ত আইএসও কোড সহ একটি টুকরো কোড সহ একটি জেএসন ফাইল রয়েছে:

{  
  "এএফ": "আফগানিস্তান",  
  "AL": "আলবেনিয়া",  
  "ডিজেড": "আলজেরিয়া",  
  ...  
}
  • আমি .png ফাইলগুলির লো-কেসে তাদের আইএসও নাম দিয়ে নতুন নামকরণ করতে চাই। এর মানে হল যে আমি সব আমার ফোল্ডারে নিম্নলিখিত ইনপুট আছে চাই .pngচিত্র: af.png, al.png, dz.png, ইত্যাদি

আমি নিজেই কীভাবে নোড.জেএস দিয়ে এটি করব তা নিয়ে গবেষণা করার চেষ্টা করছিলাম, তবে আমি এখানে কিছুটা হারিয়েছি এবং কিছু সংকেতকে আমি অনেক প্রশংসা করব।

আগাম ধন্যবাদ!

উত্তর:


154

আপনাকে এটির জন্য ব্যবহার 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);
});

আপনার তাজা-পঠিত জেএসওএন অবজেক্টের কীগুলি এবং মানগুলির উপরে এটি একটি লুপে রাখুন এবং আপনার কাছে একটি ব্যাচের নাম পরিবর্তনের স্ক্রিপ্ট পেয়েছে।

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ফাইলটি বিশ্বাসযোগ্য এবং এটির কীগুলি এবং মানগুলি সরাসরি ফাইল নামগুলিতে ব্যবহার করা নিরাপদ that's যদি এটি না হয় তবে সঠিকভাবে এড়ানোর জন্য নিশ্চিত হন!)


9
আপনার উত্তরের শেষ দুটি লাইন খুব গুরুত্বপূর্ণ :)
প্রণব

আপনি কেবল .json: const obj = require('/path/to/countries.json');এবং তারপরে আমদানি করতে পারেন :for(var p in obj) {...}
viES

4
আপনি করতে পারেন, কিন্তু ... না। সেই ফাইলটিতে require কোড এক্সিকিউট করে । আপনি কারও জন্য সম্ভাব্যভাবে অ্যাপ্লিকেশনটিতে দূষিত কোড ইনজেক্ট করার একটি উপায় প্রবর্তন করছেন (অর্থাত্ .json ফাইলটি সংশোধন করে)। পড়া এবং ব্যবহার JSON.parse()সম্পূর্ণরূপে এড়ানো হয়। খুব সামান্য কম কোড লেখার খাতিরে সুরক্ষা নিয়ে আপস করবেন না।
ভোটিডিসিপল

আপনার পাথের স্ট্রিংটিকে সম্মতি জানানোর পরিবর্তে পথ.রোগ সমাধান করা নিরাপদ ।
জুলিয়ানসোটো

সিঙ্ক্রোনাস সংস্করণের জন্য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}`);

এটাই!


4
এটির চেয়ে বেশি পছন্দ হওয়ার কারণ রয়েছে কি fs.rename?
ইলেক্ট্রোভির

এটি সিঙ্ক্রোনাস - তবে nodejs.org/api/fs.html#fs_fs_renamesync_oldpath_newpath
ওলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.