2012-09-27 22 views
6

Windows'ta bölümler listesini nodejs kullanarak almak istiyorum. fs.readdir, C: 'nin altındaki herhangi bir klasör için iyi çalışır, ancak "C:", "D:" ve benzeri bölümlerin listesini vermek için ne vereceğimi anlayamıyorum.liste bölümleri

Ne kullanmam gerektiğini bilen var mı?

cevap

8

Node.js'de bölümleri listelemek için bir api yok. Bir çözüm, child_process kullanmak ve wmic komutunu (veya bölümleri listeleyebilen herhangi bir komut) çalıştırmaktır.

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

, teşekkür bir ton! – user1703467

3

Benim 2 cent: -: Eğer tam olarak aradığınızı eşleşirse

/** 
* 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

emin değil Biraz geliştirilmiş

kolay entegrasyon için geri arama fonksiyonu, sürücülerin dizisi döndürür ancak, drivelist adlı bir NodeJS modülü kurarak, bağlanan sürücülerle ilgili montaj noktalarına geri döneceğiz (örneğin: Windows'ta harfleri bağlama):

[ 
    { 
     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 
    } 
] 

Çıkarılamayan sürücüler, system: false olarak işaretlenmiştir, aradığınızı bu özellikte filtreleyebilirsiniz.

Bu modülün en büyük avantajı, tüm büyük işletim sistemlerinde çalışır.

0

https://github.com/resin-io-modules/drivelist Bkz biraz daha basit uygulaması:

iş yapar
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); 
});