将硬盘驱动器号转换为相应的设备ID(或反之亦然)

时间:2014-03-29 08:44:15

标签: windows batch-file command-line wmi wmic

我需要识别硬盘驱动器设备制造商ID的驱动器号(或者反之亦然,我也可以这样做)。

检索制造商ID的命令:

WMIC.exe DiskDrive Get /Format:List

示例输出(分割并格式化HTML实体):

PNPDeviceID=DISK&VEN_WDC_WD10&PROD_02FAEX-00Z3A0

检索驱动器号的命令:

WMIC.exe Volume Get /Format:List

示例输出:

DriveLetter=C:

问题是我找不到任何有用的属性,我可以从两个输出关联来进行查询,我的意思是我不知道如何处理制造商ID来搜索每个ID的驱动器号,我看不出任何方法来识别ID的驱动器号。

所以,当我获得DeviceID DISK&VEN_WDC_WD10&PROD_02FAEX-00Z3A0时,我需要将其转换为等效的driveLetter,即C:,这就是全部。

我已尝试使用WMIC工具,因为我不知道如何使用Windows中提供的本机命令行工具关联此信息,但实际上并非完全有必要完成此任务访问{{ 1}}类,我可以接受使用Windows中其他预设工具的解决方案(可能是WMI?),或者也可以接受BCDedit语言的解决方案,但对于环境环境,我不能做此任务使用任何其他语言(包括本机VBScript),也不使用Microsoft提供的PowerShell实用程序等第三方工具。

我需要的原因是完成此脚本,该脚本应检索并排除DriveLetter Devcon的DeviceID:

C:

2 个答案:

答案 0 :(得分:1)

diskpart /s diskpart.script

脚本中有两行

select disk 0
detail disk

帮助?

答案 1 :(得分:0)

获取存储系统(C :)的硬盘驱动器的设备ID的解决方案

@Echo OFF & Setlocal EnableDelayedExpansion

(
 REM Diskpart Script to get details about the System's Hard Drive.
 Echo Select Disk=System
 Echo Detail Disk
) > "%TEMP%\Diskpart.tmp"

For /F "Tokens=*" %%# in (
    'Diskpart /S "%TEMP%\Diskpart.tmp" ^| Find /I "Disk Device"'
) Do (
    For /F "Tokens=1,2,* Delims=\ " %%a in (
        'WMIC.exe DiskDrive Where Model^="%%#" Get PNPDeviceID /Format:CSV ^| Find /I "&"'
    ) Do (
        Set "DeviceID=%%b"
        Set "DeviceID=!DeviceID:&=&!"
    )
)

Echo "!DeviceID!"

Pause&Exit /B 0