11

有没有办法检索计算机上所有逻辑驱动器的驱动器名称?

我查看了 fs api,但从那里我只能枚举给定目录的文件和目录。

4

5 回答 5

12

我不确定您所说的“驱动器名称”是什么意思。如果您指的是 形式的驱动器\\.\PhysicalDriveN,我遇到了同样的问题并实现了这个适用于所有主要操作系统的模块:

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

对于 Windows,您会获得以下信息:

[
    {
        device: '\\\\.\\PHYSICALDRIVE0',
        description: 'WDC WD10JPVX-75JC3T0',
        size: '1000 GB'
    },
    {
        device: '\\\\.\\PHYSICALDRIVE1',
        description: 'Generic STORAGE DEVICE USB Device',
        size: '15 GB'
    }
]
于 2015-01-30T17:44:51.520 回答
8

如果你的目标是 Windows,你可以试试这个:

这个解决方案基于这篇文章的想法。

我用承诺包装它。

var spawn = require("child_process").spawn

function listDrives(){
    const list  = spawn('cmd');

    return new Promise((resolve, reject) => {
        list.stdout.on('data', function (data) {
            // console.log('stdout: ' + String(data));
            const output =  String(data)
            const out = output.split("\r\n").map(e=>e.trim()).filter(e=>e!="")
            if (out[0]==="Name"){
                resolve(out.slice(1))
            }
            // console.log("stdoutput:", out)
        });

        list.stderr.on('data', function (data) {
            // console.log('stderr: ' + data);
        });

        list.on('exit', function (code) {
            console.log('child process exited with code ' + code);
            if (code !== 0){
                reject(code)
            }
        });

        list.stdin.write('wmic logicaldisk get name\n');
        list.stdin.end();
    })
}

listDrives().then((data) => console.log(data))

测试一下,你会看到如下结果:

["c:", "d:"]
于 2017-05-13T15:34:28.257 回答
6

根据Edwin Lee的回答:

const child = require('child_process');

child.exec('wmic logicaldisk get name', (error, stdout) => {
    console.log(
        stdout.split('\r\r\n')
            .filter(value => /[A-Za-z]:/.test(value))
            .map(value => value.trim())
    );
});

输出:['C:', 'D:']

于 2018-09-19T17:59:48.963 回答
2

使用DiskPart命令怎么样?在命令行中运行是否会diskpart list为您提供所需的输出?如果是这样,您可以使用child_process.exec在节点中执行此操作

var exec = require('child_process').exec
var cmd = 'diskpart list'
exec(cmd, function(err, stdout, stderr) {
    if (err) {
        console.log('error running diskpart list command')
        console.log(err)
        return
    }
    console.log('stdout data')
    console.log(stdout)

    console.log('stderr data')
    console.log(stderr)
})
于 2013-04-08T13:58:53.397 回答
0

+1 @Bagherani 的降级建议!

我正在使用 Electron React Boilerplate v4.0 并且无法加载驱动列表。我降级到 drivelist@5.2.12,它可以满足我的需要。

于 2021-10-17T18:24:03.827 回答