进程explorer.exe如果有多个的话,用以下代码
根据需求自己修改变量pmax和per的值- @echo off
- setlocal enabledelayedexpansion
-
- ::要检测的进程名
- set pro=explorer.exe
-
- ::最多允许多少个进程同时运行
- set pmax=100
-
- ::检测周期,单位秒,默认一分钟
- set per=60
-
- :jiance
- set/a cnt=0
- echo;正在检测%pro%...
-
- ::mid数组存放进程的pid,mem数组存放进程占用的内存
- for /f "tokens=1-5" %%a in ('tasklist^|find /i "%pro%"') do (
- set/a cnt+=1
- set mid!cnt!=%%b
- set mem=%%e
- set mem=!mem:,=!
- set mem!cnt!=!mem!
- )
-
- :shengxu 升序排列,占用内存最小的几个就在前面。
- set/a px=0
- for /l %%a in (1,1,%cnt%) do (
- if %%a neq %cnt% (
- set/a q=%%a+1
- for /f %%b in ("!q!") do (
- set/a q1=!mem%%a!,q2=!mem%%b!,q3=!mid%%a!
- if !q1! gtr !q2! (
- set/a px+=1,t=q1,mid%%a=!mid%%b!
- set/a mem%%a=q2,mem%%b=t,mid%%b=q3
- )
- )
- )
- )
- if %px% neq 0 (goto shengxu)
-
- ::去除超过pmax的进程
- if %cnt% gtr %pmax% (
- set/a q=cnt-pmax
- for /l %%a in (1,1,!q!) do (
- taskkill /f /fi "PID eq !mid%%a!" /im %pro%
- )
- )
-
- echo;休息中...
- for /f "delims==" %%a in ('set m') do (set "%%a=")
- ping/n %per% 127.0>nul
- goto jiance
复制代码
|