2012-09-27 13 views
6

Ich möchte die Liste der Partitionen in Windows mit Nodejs erhalten. fs.readdir funktioniert gut für jeden Ordner unterhalb oder einschließlich C :, aber ich kann nicht herausfinden, was es zu geben, um die Liste der Partitionen wie "C:", "D:" und so weiter zu haben.Partitionen in Nodejs auflisten

Wer weiß, was ich verwenden soll?

Antwort

8

Es gibt keine API in node.js, um Partitionen aufzulisten. Eine Problemumgehung besteht darin, child_process zu verwenden und den Befehl wmic auszuführen (oder einen Befehl, der Partitionen auflisten kann).

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

es die Arbeit erledigt, dank einer Tonne! – user1703467

3

Mein 2 Cent:

leicht verbessert - eine Funktion mit Rückruf für die einfache Integration, gibt einen Array von Laufwerken:

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

Nicht sicher, ob sie paßt genau, was Sie suchen für, aber wir bauen ein NodeJS-Modul mit dem Namen drivelist, die ein Array von verbundenen Laufwerken mit ihren jeweiligen Mount-Punkte zurückgibt (zB: Buchstaben in Windows montieren):

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

Nicht entfernbare Laufwerke sind als system: false markiert, Sie können nach dieser Eigenschaft filtern, wenn Sie das suchen.

Der Hauptvorteil dieses Moduls ist, dass es in allen gängigen Betriebssystemen funktioniert.

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

0

etwas einfachere Implementierung:

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