list partitions in nodejs

前端 未结 4 1251
说谎
说谎 2020-12-30 11:20

I would like to get the list of partitions in windows, using nodejs. fs.readdir works fine for any folder below or including C:, but I cant figure out what to give it to hav

相关标签:
4条回答
  • 2020-12-30 11:28

    a little simpler implementation:

    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);
    });
    
    0 讨论(0)
  • 2020-12-30 11:31

    Not sure if it matches exactly what you're looking for, but we build a NodeJS module called drivelist that will return an array of connected drives with their respective mount points (e.g: mount letters 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
        }
    ]
    

    Non-removable drives are marked as system: false, you can filter by that property if that's what you're looking for.

    The major advantage of this module is that is works in all major operating systems.

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

    0 讨论(0)
  • 2020-12-30 11:42

    There is no api in node.js to list partitions. One workaround is to use child_process and execute wmic command (or any command which can list partitions).

    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 讨论(0)
  • 2020-12-30 11:43

    My 2 cents:

    Slightly enhanced - a function with callback for easy integration, returns an array of drives :

    /**
     * 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();
    }
    
    0 讨论(0)
提交回复
热议问题