批处理文件以°C为单位获取CPU温度并设置为变量

09s*_*enb 8 windows cpu batch-file temp windows-7

如何获取批处理文件以计算出Cpu的温度并将其作为变量返回.我知道它可以完成,因为我已经看到它已经完成.该解决方案可以使用任何外部工具.我在谷歌上看了至少2个小时,但一无所获.任何人都可以帮忙.谢谢.

Kev*_*son 13

你可以使用wmic.exe:

wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature
Run Code Online (Sandbox Code Playgroud)

输出wmic如下所示:

CurrentTemperature
2815
Run Code Online (Sandbox Code Playgroud)

单位为MSAcpi_ThermalZoneTemperature十分之一开尔文,所以如果你想要摄氏度,你会做这样的事情:

@echo off

for /f "delims== tokens=2" %%a in (
    'wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature /value'
) do (
    set /a degrees_celsius=%%a / 10 - 273
)

echo %degrees_celsius%
Run Code Online (Sandbox Code Playgroud)

一些东西:

1)您的硬件可能支持或不支持该属性.

2)每个引导周期可以更新或不更新一次.

3)您可能需要管理权限才能查询该值.

  • 当我运行它时,我得到 2982,即 298.2 开尔文 298.2-273=25.2 摄氏度。这是 77 华氏度,比我的 CPU 温度低得多。我很确定这只是给了我室温而不是 CPU 温度。 (2认同)

Dav*_*ann 11

下面是一个保留十进制值并使用完整转换值的示例.

@echo off
for /f "skip=1 tokens=2 delims==" %%A in ('wmic /namespace:\\root\wmi PATH MSAcpi_ThermalZoneTemperature get CurrentTemperature /value') do set /a "HunDegCel=(%%~A*10)-27315"
echo %HunDegCel:~0,-2%.%HunDegCel:~-2% Degrees Celsius
Run Code Online (Sandbox Code Playgroud)

产量

38.05 Degrees Celsius
Run Code Online (Sandbox Code Playgroud)