我想使用nodejs获取windows中的分区列表。fs.readdir 适用于任何低于或包括 C: 的文件夹,但我无法弄清楚要给它什么才能拥有“C:”、“D:”等分区列表。
有人知道我应该使用什么吗?
我想使用nodejs获取windows中的分区列表。fs.readdir 适用于任何低于或包括 C: 的文件夹,但我无法弄清楚要给它什么才能拥有“C:”、“D:”等分区列表。
有人知道我应该使用什么吗?
node.js 中没有用于列出分区的 api。一种解决方法是使用 child_process 并执行wmic
命令(或任何可以列出分区的命令)。
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();
不确定它是否与您正在寻找的完全匹配,但我们构建了一个名为drivelist的 NodeJS 模块,该模块将返回一个连接的驱动器数组及其各自的安装点(例如: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
}
]
不可移动驱动器标记为system: false
,如果这是您要查找的内容,您可以按该属性进行过滤。
该模块的主要优点是适用于所有主要操作系统。
我的 2 美分:
略微增强 - 一个带有回调的函数以便于集成,返回一个驱动器数组:
/**
* 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();
}
一个更简单的实现:
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);
});