PDA

Показать полную графическую версию : [решено] Получение температуры диска через cmd сценарий.


voler
28-06-2013, 08:35
Добрый день.

Посоветуйте как получить температуру hdd средствами windows?
smartctrl.exe или DickTemp.exe пробовал.

kiripanda
28-06-2013, 19:52
@echo off &setlocal enableextensions

for /f "tokens=8" %%a in ('smartctl.exe -f brief -A sda ^|findstr /c:Temperature_Celsius') do set /a Temperature=%%a
set Temperature

pause

voler
01-07-2013, 08:13
А как сюда в писать передачу sda, sdb или любого другого диска?

Т.е. hddtemp.cmd parm?

Crazy Noise
01-07-2013, 10:20
voler, Вот (http://habrahabr.ru/sandbox/37885/) ещё.

voler
01-07-2013, 11:02
ещё »
Это не то.

Вот не много изменил
for /f "tokens=8" %%a in ('smartctl.exe -f brief -A sda ^|findstr /c:Temperature_Celsius') do ECHO %%a
Но вопрос по передачи параметра остается, т.е. в место sda нужно передать аргумент из командной строки. Как это лучше сделать?

Iska
01-07-2013, 12:12
Так?
@echo off
setlocal enableextensions enabledelayedexpansion

set sDevice=%~1

if defined sDevice (
for /f "usebackq tokens=8" %%i in (
`@"%ProgramFiles%\smartmontools\bin\smartctl.exe" -f brief -A %sDevice% ^| find.exe /i "Temperature_Celsius"`
) do set /a iTempture = %%i

if defined iTempture echo Tempture: [!iTempture!]
) else (
echo Usage: %~nx0 ^<device^>
)

endlocal
exit /b 0

D:\Install\Smartmontools\Smartmontools 5.41>0001.cmd sdc
Tempture: [36]

voler
01-07-2013, 15:08
Так? »
Переделал так с вашего позволения

@echo off
setlocal enableextensions enabledelayedexpansion

set sDevice=%~1
SET SMARTCTL="C:\Program Files\NSClient++\scripts\smartctl.exe"

if defined sDevice (
for /f "usebackq tokens=8" %%i in (
`@%SMARTCTL% -f brief -A %sDevice% ^| find.exe /i "Temperature_Celsius"`
) do set /a iTempture = %%i

if defined iTempture echo !iTempture!
) else (
echo Usage: %~nx0 ^<device^>
)

endlocal
exit /b 0

kiripanda
01-07-2013, 19:16
@echo off &setlocal enableextensions
:: Usage: Temperature.cmd sda sdb

set smartctl="C:\Program Files\NSClient++\scripts\smartctl.exe"

for %%d in (%~1 %~2 %~3 %~4 %~5 %~6 %~7 %~8 %~9) do (
for /f "tokens=8" %%t in ('%smartctl% -f brief -A %%d ^|findstr /c:Temperature_Celsius') do echo Temperature %%d = %%t
)

pause

Iska
01-07-2013, 23:17
kiripanda, а ежели параметров на один больше окажется ;)? Лучше уж с «shift» работать, наподобие:
@echo off
setlocal enableextensions enabledelayedexpansion

set sHasParameters=%~1

if not defined sHasParameters (
echo Usage: %~nx0 ^<device^>
goto :eof
)

:Repeat

set sDevice=%~1

if not defined sDevice goto :eof

for /f "usebackq tokens=8" %%i in (
`@"%ProgramFiles%\smartmontools\bin\smartctl.exe" -f brief -A "%sDevice%" ^| find.exe /i "Temperature_Celsius"`
) do set /a iTempture = %%i

if defined iTempture echo Tempture of [%sDevice%]: [!iTempture!]

shift
goto :Repeat


endlocal
exit /b 0

Foreigner
01-07-2013, 23:23
Iska, Тогда уж лучше просто %*

Iska
02-07-2013, 06:31
Foreigner, тоже логично ;).




© OSzone.net 2001-2012