2012-09-27 17 views
6

में सूची विभाजन मैं नोडजेज़ का उपयोग करके विंडोज़ में विभाजन की सूची प्राप्त करना चाहता हूं। fs.readdir नीचे दिए गए किसी भी फ़ोल्डर या सी सहित, ठीक काम करता है, लेकिन मैं यह नहीं समझ सकता कि इसे "सी:", "डी:" और इसी तरह के विभाजनों की सूची रखने के लिए क्या देना है।सूची विभाजन नोडजेस

कोई भी जानता है कि मुझे क्या उपयोग करना चाहिए?

उत्तर

8

विभाजन सूची सूचीबद्ध करने के लिए node.js में कोई एपीआई नहीं है। एक वर्कअराउंड child_process का उपयोग करना है और wmic कमांड निष्पादित करना है (या कोई भी आदेश जो विभाजन को सूचीबद्ध कर सकता है)।

var spawn = require('child_process').spawn, 
    list = spawn('cmd'); 

list.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); 
}); 

list.stderr.on('data', function (data) { 
    console.log('stderr: ' + data); 
}); 

list.on('exit', function (code) { 
    console.log('child process exited with code ' + code); 
}); 

list.stdin.write('wmic logicaldisk get name\n'); 
list.stdin.end(); 
+0

यह काम करता है, धन्यवाद एक टन! – user1703467

3

मेरे 2 सेंट: -

थोड़ा बढ़ाया आसानी से एकीकरण के लिए कॉलबैक के साथ एक समारोह, ड्राइव की एक सरणी देता है:

/** 
* Get windows drives 
* */ 
function get_win_drives(success_cb,error_cb){ 
    var stdout = ''; 
    var spawn = require('child_process').spawn, 
      list = spawn('cmd'); 

    list.stdout.on('data', function (data) { 
     stdout += data; 
    }); 

    list.stderr.on('data', function (data) { 
     console.log('stderr: ' + data); 
    }); 

    list.on('exit', function (code) { 
     if (code == 0) { 
      console.log(stdout); 
      var data = stdout.split('\r\n'); 
      data = data.splice(4,data.length - 7); 
      data = data.map(Function.prototype.call, String.prototype.trim); 
      success_cb(data); 
     } else { 
      console.log('child process exited with code ' + code); 
      error_cb(); 
     } 
    }); 
    list.stdin.write('wmic logicaldisk get caption\n'); 
    list.stdin.end(); 
} 
3

सुनिश्चित नहीं हैं कि अगर यह मेल खाता है कि वास्तव में आप क्या चाहते हैं के लिए, लेकिन हम drivelist नामक एक नोडजेएस मॉड्यूल का निर्माण करते हैं जो कनेक्टेड ड्राइव की एक सरणी को उनके संबंधित माउंट पॉइंट्स (जैसे: विंडोज़ में माउंट अक्षरों) के साथ वापस लाएगा:

[ 
    { 
     device: '\\\\.\\PHYSICALDRIVE0', 
     description: 'WDC WD10JPVX-75JC3T0', 
     size: '1000 GB' 
     mountpoint: 'C:', 
     system: true 
    }, 
    { 
     device: '\\\\.\\PHYSICALDRIVE1', 
     description: 'Generic STORAGE DEVICE USB Device', 
     size: '15 GB' 
     mountpoint: 'D:', 
     system: false 
    } 
] 

गैर-हटाने योग्य ड्राइव system: false के रूप में चिह्नित हैं, तो आप उस संपत्ति द्वारा फ़िल्टर कर सकते हैं यदि आप यही खोज रहे हैं।

इस मॉड्यूल का मुख्य लाभ यह है कि सभी प्रमुख ऑपरेटिंग सिस्टम में काम करता है।

https://github.com/resin-io-modules/drivelist

0

देखें एक छोटे से सरल कार्यान्वयन:

const exec = require('child_process').exec; 
exec('wmic logicaldisk get name', (error, stdout, stderr) => { 
    if (error) { 
    console.error(`exec error: ${error}`); 
    return; 
    } 
    console.log('stdout ', stdout); 
    console.log('stderr ', stderr); 
}); 
संबंधित मुद्दे