Что из себя представляет класс MSStorageDriver_ATAPISmartData? Запускаем обозрезатель WMI и видим:
Код:
MSStorageDriver_ATAPISmartData
----------------------------------------------------------------------------------------------------
Данные ATAPI SMART
...
VendorSpecific(Type: UInt8, Local: True, Array: True)
Данные предсказания ошибок, от производителя
...
То есть, в VendorSpecific хранятся данные S.M.A.R.T. как то, например, температура HDD, которая по идее должна вычисляться примерно так:
Код:
@echo off
setlocal
set "wmi=wmic /namespace:\\root\wmi path"
set "wmi=%wmi% MSStorageDriver_ATAPISmartData"
set "wmi=%wmi% get VendorSpecific /value"
for /f "tokens=2 delims=}{" %%i in ('%wmi%') do (
set "smart=%%i"
)
rem 151 байт для WinXP, 127 - Win7
call:getbyte 127 %smart%
endlocal
exit /b
:getbyte
for /l %%i in (1, 1, %1) do shift
echo:HDD temperature: %2C
exit /b
Что же касается скорости вращения, если Вы конечно не подразумеваете под ней раскрутку шпинделя, то здесь Вы ее не найдете. Для этого Вам придется прибегруть либо к счетчикам производительности, вычисляя соотношение обмена данных с диском из значения, получаемого через:
Код:
typeperf "\Физический диск(_Total)\Скорость обмена с диском (байт/сек)"
либо обратиться к WinAPI, конкретно - DeviceIoControl (или комбинации NTAPI'шных функций, как NtQuerySystemInformation, NtDeviceIoControlFile и т.д.).