2012-09-27 21 views
6

Me gustaría obtener la lista de particiones en windows, usando nodejs. fs.readdir funciona bien para cualquier carpeta a continuación o incluye C :, pero no puedo imaginar qué darle para tener la lista de particiones como "C:", "D", etc.liste las particiones en nodejs

¿Alguien sabe qué debo usar?

Respuesta

8

No hay una API en node.js para listar particiones. Una solución consiste en utilizar child_process y ejecutar el comando wmic (o cualquier comando que pueda listar particiones).

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

que hace el trabajo, gracias por tonelada! – user1703467

3

Mis 2 centavos:

ligeramente mejorados - una función de devolución de llamada con una fácil integración, devuelve una matriz de unidades:

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

No estoy seguro de si coincide exactamente lo que estás buscando para, pero construimos un módulo NodeJS llamado drivelist que devolverá una matriz de unidades conectadas con sus respectivos puntos de montaje (por ejemplo: letras de montaje en 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 
    } 
] 

Las unidades no extraíbles están marcadas como system: false, puede filtrar por esa propiedad si eso es lo que está buscando.

La principal ventaja de este módulo es que funciona en todos los principales sistemas operativos.

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

0

una pequeña aplicación más simple:

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