回答
如何使用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)
})
这将工作是的,但我想避免运行子进程和解析命令输出。但是,如果节点的API中没有任何东西,那可能是我会采用的...... – foobarcode 2013-04-08 14:10:46
我相信这是你打算做的最好的事情。 node.js本身没有任何方法可以做到这一点。在OSX上,你可以阅读'/ Volumes /'目录,而在linux上你可以看'/ mnt',但是Windows没有为你提供安装驱动的目录。另外请注意http://www.computerhope.com/issues/ch000854.htm#2和wmic logicaldisk获取名称 – Noah 2013-04-08 14:19:56
好吧我不知道这一点,感谢您的回答 – foobarcode 2013-04-08 14:32: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'
}
]
这是一个正确的跨平台解决方案!如果您仅为一个操作系统在nodejs中创建应用程序,那么您做错了! – tborychowski 2015-12-30 12:17:21
如果你的目标是Windows,你可以试试这个:
这个解决方案基于this post的想法。
我用承诺包装它。
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:"]
- 1. 枚举外部驱动器
- 2. 如何枚举硬盘驱动器
- 3. 系统驱动器列表
- 4. 如何枚举Python的文件系统?
- 5. 如何枚举系统中已安装的视频适配器
- 6. 在Node.JS中使用名称的枚举驱动器
- 7. 枚举Windows中的所有可用驱动器号
- 8. 将操作系统表示为枚举
- 9. C#枚举与数据驱动列表
- 10. 什么是检索系统驱动器
- 11. 如何枚举.Net中的Windows系统托盘中的对象?
- 12. DAO中的枚举没有常规的系统方法?
- 13. Android:枚举系统中的所有唤醒锁
- 14. 在.net中是否有CSS媒体类型的系统枚举?
- 15. 确定驱动器的大小(驱动器上没有文件系统)Win7
- 16. 枚举内核驱动程序中的所有符号链接
- 17. 在枚举中枚举
- 18. System.Windows.Forms.Keys枚举器中的AltGr
- 19. 如何枚举嵌套枚举器
- 20. 在系统verilog枚举中保留位宽度
- 21. 列出Linux系统中的所有硬盘驱动器
- 22. Node.js native枚举中的枚举类型
- 23. 是枚举Java中的枚举
- 24. Java在枚举中的枚举
- 25. 在统计员中编写枚举
- 26. 带枚举的MySQL枚举
- 27. 如何防止登录系统的用户枚举攻击?
- 28. 枚举子系统失败jobserver GoDaddy的数据库
- 29. .NET 4.0文件系统枚举功能的奇怪之处
- 30. 在JavaScript中自动枚举
哪个系统,你定位?解决方案是否需要跨平台工作,还是需要平台特定? – Noah 2013-04-08 13:38:56
我的目标是Windows,它不需要跨平台 – foobarcode 2013-04-08 13:53:23