2012-09-27 13 views
6

Vorrei ottenere l'elenco delle partizioni in Windows, utilizzando nodejs. fs.readdir funziona bene per qualsiasi cartella sottostante o incluso C :, ma non riesco a capire cosa dare per avere l'elenco delle partizioni come "C:", "D:" e così via.elenco partizioni in nodejs

Qualcuno sa cosa dovrei usare?

risposta

8

Non esiste alcun API in node.js per elencare le partizioni. Una soluzione alternativa è usare child_process ed eseguire il comando wmic (o qualsiasi comando che possa elencare le partizioni).

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

fa il lavoro, grazie una tonnellata! – user1703467

3

I miei 2 centesimi:

leggermente migliorata - una funzione di callback con una facile integrazione, restituisce un array di unità:

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

Non sono sicuro se corrisponde esattamente quello che stai cercando per, ma costruiamo un modulo NodeJS chiamato drivelist che restituirà una serie di unità connesse con i rispettivi punti di montaggio (es .: lettere di montaggio in Windows):

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

Le unità non rimovibili sono contrassegnate come system: false, è possibile filtrare in base a tale proprietà se è ciò che si sta cercando.

Il principale vantaggio di questo modulo è che funziona in tutti i principali sistemi operativi.

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

0

un po 'più semplice implementazione:

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); 
});