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

我需要识别硬盘驱动器设备的制造商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来search每个ID的驱动器号,我可以'看不出任何方法来识别ID的驱动器号。

所以现在我得到了DeviceID的DISK&VEN_WDC_WD10&PROD_02FAEX-00Z3A0我需要把它翻译成等效的driveLetter,这是C: :,就这些。

我已经尝试使用WMIC工具,因为我不知道如何使用Windows提供的本地命令行工具来关联这个信息,但实际上并不是完全需要我完成这个任务访问WMI类,我可以接受一个解决schemeWindows中的其他预先安装的工具(也许是BCDedit ?),或者VBScript语言的解决scheme也应该被接受,但是对于环境来说,我不能在任何其他语言(包括本机PowerShell )中执行此任务,也不能使用第三方工具Microsoft提供的Devcon实用程序。

我需要的原因是完成这个脚本,它应该检索并排除DriveLetter C:的DeviceID:

 @Echo OFF & REM Mode con cols=150 lines=50 :: Exclude this drive during the process. Set "ExcludedDrive=C:" :: This variable should be set later, :: Stores the device ID of the drive letter excluded above. Set "ExcludedID=" REM ************ REM PSEUDO CODE: REM ************ REM REM To get Volume Information: REM WMIC.exe Volume Get /Format:List REM WMIC.exe Volume Where 'DriveLetter="C:"' Get /Format:CSV REM REM To get DiskDrive Information: REM WMIC.exe DiskDrive Get /Format:List REM REM :: Identify the drive letter of each DeviceID to add exclusions REM For Each %%DriveLetter in %ExcludedDrive% do ( REM REM :: Retrieve an WMIC Result REM Set WMIC_Query_Result=¿? REM Set WMIC_Query_Result_DriveLetter=¿? REM Set WMIC_Query_Result_DeviceID=¿? REM REM If %WMIC_Query_Result_DriveLetter% EQU %%DriveLetter ( REM Set "ExcludedID=%WMIC_Query_Result_DeviceID%" REM ) REM ) REM REM ****************** REM END OF PSEUDO CODE REM ****************** For /F "Tokens=* Delims=" %%a In ( 'REG.exe Query "HKLM\SYSTEM\CurrentControlSet\Enum\SCSI" ^| Find /I "Disk&"' ) Do ( Echo "%%a" | Find /I "%ExcludedID%" || ( For /F "Tokens=* Delims=" %%b In ('REG.exe Query "%%~a"') Do ( Reg.exe ADD "%%b\Device Parameters\Disk" /V "UserWriteCacheSetting" /T "REG_DWORD" /D "0x00000000" /F 1>NUL ) ) ) Pause&Exit 

是否

 diskpart /s diskpart.script 

在脚本中有两行

 select disk 0 detail disk 

帮帮我?

获取存储系统的硬盘的设备ID的解决方案(C 🙂

 @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