根据内存消耗结束进程的脚本 windows 10

根据内存消耗结束进程的脚本 windows 10

我正在寻找一个批处理或 powershell 脚本,如果某个进程使用的内存少于 10 MB,则结束该进程并重新启动它。我尝试了很多次搜索,但找不到最终的解决方案。

这是我试过的脚本,但是不起作用。请帮忙,谢谢!

:start
@ECHO OFF
SET procName=iexplorer.exe
SET RAMLimit=10240
FOR /F "tokens=*" %%F IN ('tasklist^|findstr %procName%') DO SET foundString=%%F
FOR /F "tokens=5" %%F IN ("%foundString%") DO SET RAMConsumption=%%F
IF %RAMConsumption% LEQ %RAMLimit% && ping 8.8.8.8 -n 6 | FIND /I "out"
if errorlevel 0 (
TASKKILL /IM %procName%
) else (
echo iexplorer is working
)
goto start

答案1

这是一个 PowerShell 解决方案:

Get-Process iexplore -ea 0 | where { $_.PM -le 10MB } | foreach {
    $Path = $_.Path
    [bool]$Ping = Test-Connection 8.8.8.8 -Quiet
    if ($Path -and $Ping) {
        Stop-Process $_ -Force
        Start-Process $Path
    }
}

首先,它会查找所有iexplore进程,然后过滤掉where所有 RAM 消耗小于或等于 10MB 的进程。对于符合条件的每个进程where,它会停止并重新启动该进程

编辑:看起来您想要在无限循环中运行它,如果是这样,只需将您的脚本包装在while这样的循环中

while ($true) {
    Get-Process iexplore -ea 0 | where { $_.PM -le 10MB } | foreach {
        $Path = $_.Path
        [bool]$Ping = Test-Connection 8.8.8.8 -Quiet
        if ($Path -and $Ping) {
            Stop-Process $_ -Force
            Start-Process $Path
        }
    }
    sleep -s 1
}

如果没有路径:

while ($true) {
    Get-Process iexplore -ea 0 | where { $_.PM -le 10MB } | foreach {
        [bool]$Ping = Test-Connection 8.8.8.8 -Quiet
        if ($Ping) {
            Stop-Process $_ -Force
            Start-Process iexplore
        }
    }
    sleep -s 1
}

相关内容