关闭程序的脚本';s导致CPU过热
本文关键字:导致 CPU 过热 脚本 关闭程序 | 更新日期: 2023-09-27 17:58:32
您可以看到,我使用CoreTemp程序来监控CPU热量,当CPU温度达到指定值时,该程序允许您运行脚本或程序。。
我想要的是,当CPU温度达到一定值时,CPU使用率最高的进程将关闭!!
换句话说,我需要一个脚本/程序来自动扫描进程并强制关闭CPU使用率最高的进程
谢谢!
试试这个:
检查具有较高内存使用的程序:
@echo off
setlocal EnableDelayedExpansion
for /f "skip=4 tokens=1-5 delims= " %%a in ('tasklist') do (
set $Size=00000000%%e
set $Size=!$size:.=!
set #!$size:~-10!=%%a
)
for /f "tokens=2 delims==" %%a in ('set #') do (set $Bigger=%%a)
echo taskkill /IM !$Bigger!
检查CPU使用率较高的进程:
@echo off
setlocal EnableDelayedExpansion
for /f "skip=2 tokens=1-2 delims= " %%a in ('"wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime"') do (
if "%%a"=="_Total" goto:next
set #%%b=%%a
)
:next
for /f "tokens=1-2 delims==" %%a in ('set #') do (
set $Bigger=%%b
set $Value=%%a
)
if "!$Value!"=="#0" goto:nothing
echo taskkill /IM !$Bigger!.exe [!$Value:#=!%%]
goto:eof
:nothing
Echo CPU IS INACTIVE
如果输出正常,则删除最后一行上的ECHO
你可以改进剧本。如果您有两个具有相同名称的进程,则必须使用进程的PID来代替名称。因为程序将返回程序#1、程序#2等。这只是基本脚本。就像@09stephenb评论的那样,你必须认真对待这样的剧本。。。。
我开始为你做这件事,但我不得不离开。它基本上是完整的,所以我只想把我目前拥有的东西给你,让你从那里拿走。
@echo off
setlocal
set proc=Win32_PerfFormattedData_PerfProc_Process
set "wmi=wmic path %proc% get Name^,PercentProcessorTime"
for /f "skip=1 tokens=*" %%a in ('"%wmi%"^|findstr /i /v /g:Excludes.txt') do (
for /f "tokens=2 delims= " %%b in ( "%%a" ) do if %%b NEQ 0 echo %%a
)
创建一个名为Excludes.txt的文件,并确保它位于脚本的同一目录中。
"System Idle Process"
Idle
explorer.exe
taskmgr.exe
lsass.exe
csrss.exe
smss.exe
winlogon.exe
svchost.exe
services.exe
Core Temp
_Total