您看到我使用CoreTemp程序来监控CPU热量,此程序允许您在CPU温度达到指定值时运行脚本或程序。
我想要的是当CPU临时达到某个值时,关闭CPU使用率最高的进程!!
换句话说,我需要一个脚本/程序来自动扫描进程并强制关闭CPU使用率最高的进程。
谢谢!
答案 0 :(得分:1)
试试这个:
使用更高的内存使用率检查编程:
@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评论的那样,你必须对这样的剧本充满信心......
答案 1 :(得分:0)
我开始为你做这个,但我必须离开。它大部分都是完整的,所以我要给你我到目前为止的东西,让你从那里拿走它。
@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