回答
如何使用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. 自動映射器枚舉枚舉類
- 7. 枚舉映射驅動器中的文件
- 8. 枚舉Windows中的所有可用驅動器號
- 9. 在Node.JS中使用名稱的枚舉驅動器
- 10. 將操作系統表示爲枚舉
- 11. C#枚舉與數據驅動列表
- 12. 在vC++中使用WMI枚舉分區驅動器盤符
- 13. 枚舉驅動器的列表上的遠程域工作站
- 14. 什麼是檢索系統驅動器
- 15. 刪除或轉換'系統'驅動器
- 16. 如何枚舉.Net中的Windows系統托盤中的對象?
- 17. 枚舉perticule物理設備名稱的邏輯驅動器
- 18. Rails的活動記錄關係枚舉
- 19. DAO中的枚舉沒有常規的系統方法?
- 20. 動態枚舉轉換器
- 21. 訪問WPF數據類型中的系統枚舉
- 22. Android:枚舉系統中的所有喚醒鎖
- 23. 在.net中是否有CSS媒體類型的系統枚舉?
- 24. Windows Azure的備份 - 失敗在驅動器C:(操作系統驅動器)
- 25. 列出驅動器號和文件系統不是$ null的驅動器號
- 26. 確定驅動器的大小(驅動器上沒有文件系統)Win7
- 27. 枚舉內核驅動程序中的所有符號鏈接
- 28. 在枚舉中枚舉
- 29. System.Windows.Forms.Keys枚舉器中的AltGr
- 30. Ruby中的枚舉器
哪個系統,你定位?解決方案是否需要跨平臺工作,還是需要平臺特定? – Noah 2013-04-08 13:38:56
我的目標是Windows,它不需要跨平臺 – foobarcode 2013-04-08 13:53:23