如何通过Windows命令行或批处理判断空白可刻录光盘的容量与类型
可行方案如下
方案1:使用Windows内置PowerShell调用IMAPI2接口(无需额外安装软件,支持Win7及以上系统
IMAPI2是Windows自带的光盘刻录原生API,可以直接识别空白刻录介质的类型、容量等参数,你可以直接在PowerShell中运行以下命令:
# 加载IMAPI2对象 $imapi = New-Object -ComObject IMAPI2.MsftDiscMaster2 # 遍历所有光驱 for ($i=0; $i -lt $imapi.Count; $i++) { $recorder = New-Object -ComObject IMAPI2.MsftDiscRecorder2 $recorder.InitializeDiscRecorder($imapi.Item($i)) Write-Host "光驱盘符: $($recorder.VolumePathNames)" # 检测当前插入的介质 $formatData = New-Object -ComObject IMAPI2.MsftDiscFormat2Data $formatData.Recorder = $recorder if ($formatData.IsCurrentMediaSupported($recorder)) { $mediaType = $formatData.CurrentPhysicalMediaType $totalSectors = $formatData.TotalSectorsOnMedia $freeSectors = $formatData.FreeSectorsOnMedia $sectorSize = 2048 Write-Host "介质类型编码: $mediaType" Write-Host "总容量: $([math]::Round($totalSectors * $sectorSize / 1GB,2)) GB" Write-Host "可用容量: $([math]::Round($freeSectors * $sectorSize / 1GB,2)) GB" } else { Write-Host "当前光驱未插入可识别的刻录介质" } }
介质类型编码对应关系可直接匹配光盘分类:
- 0~0xC:CD类介质
- 0xF~0x15:DVD类介质
- 0x16~0x20:蓝光/BD类介质
- 0x21及以上:M-DISC等特殊刻录介质
如果需要在批处理文件中调用上述逻辑,直接在批处理内用powershell -Command "上述命令压缩后内容"封装即可直接调用执行。
方案2:使用第三方命令行工具
如果需要适配更低版本Windows系统,可使用免费开源的discinfo命令行工具,直接运行discinfo G:(将G替换为你的光驱盘符)即可直接输出介质类型、容量等参数,解析输出文本即可提取你需要的信息。
你之前用WMIC无法读取的原因是WMIC的logicaldisk相关接口仅返回已经挂载了文件系统的存储介质,空白刻录盘没有可识别的文件系统,所以无法读取size、freespace等字段,切换盘符报Incorrect function.也是同样原因导致的,属于正常现象。
内容的提问来源于stack exchange,提问作者HTWingNut
相关产品推荐
相关产品推荐

