Мне нужно определить букву диска идентификатора производителя жесткого диска (или, возможно, наоборот, я тоже мог бы это сделать).Перевести письмо с жестким диском в соответствующий идентификатор устройства (или наоборот)
Команда для извлечения идентификаторов производителя:
WMIC.exe DiskDrive Get /Format:List
Пример вывода (расщепляется и с HTML-сущностей отформатированных):
PNPDeviceID=DISK&VEN_WDC_WD10&PROD_02FAEX-00Z3A0
Команда для извлечения буквы диска:
WMIC.exe Volume Get /Format:List
Пример:
Проблема заключается в том, что я не могу найти какое-либо полезное свойство, которое я мог бы связывать с обоих выходов, чтобы сделать запрос, я имею в виду, что я не знаю, что делать с идентификаторами производителя, чтобы искать букву диска каждого ID, я не вижу способа идентифицировать букву диска идентификатора.
Так что в тот момент, когда я получаю DeviceID DISK&VEN_WDC_WD10&PROD_02FAEX-00Z3A0
Мне нужно перевести его на эквивалентный driveLetter, который равен C:
, вот и все.
Я попытался с помощью WMIC
инструмента «, потому что я не знаю, как связать эту информацию с помощью собственных инструментов командной строки, представленных в Windows, но на самом деле не является полной необходимым для меня accomplis этой задачи экранной к WMI
классам, я мог принять решение с использованием других предустановленных инструментов в Windows (возможно, ?), или решение в VBScript
должно быть принято также, но для среды работы я не могу выполнить эту задачу на любых других языках (включая native PowerShell
), а также не использовать Сторонние инструменты, такие как утилита Devcon
, предоставляемая Microsoft.
Причина, почему я должен это закончить этот сценарий, который должен восстановить и исключить DeviceID из Буква_диска C:
:
@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
Хммм, это смутное вопрос для меня, потому что один диск может содержит множество разделов. – Xearinox
@Xearinox Я думаю, что это не так, потому что раздел не является диском, а дисковый раздел должен указывать на диск, я работаю с идентификатором производителя жесткого диска. – ElektroStudios
Да, но я пытаюсь преобразовать письмо в идентификатор диска. Что делать, если на одном диске есть буквы C, D, E. – Xearinox