我想使用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 namen'); list.stdin.end();
我的2美分:
稍微增强 – 具有回调功能,便于集成,返回一组驱动器:
/** * Get windows drives * */ function get_win_drives(success_cb,error_cb){ var stdout = ''; var spawn = require('child_process').spawn,function (data) { stdout += data; }); list.stderr.on('data',function (code) { if (code == 0) { console.log(stdout); var data = stdout.split('rn'); 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 captionn'); 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 ,如果这是您要查找的内容,则可以通过该属性进行过滤。
这个模块的主要优点是适用于所有主要的操作系统。
请参阅https://github.com/resin-io-modules/drivelist
一个简单的实现:
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); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。