Board logo

标题: [已解决]判断进程使用内存大于指定阀值重启程序 [打印本页]

作者: 樵夫    时间: 2017-8-7 16:27     标题: [已解决]判断进程使用内存大于指定阀值重启程序

本帖最后由 樵夫 于 2017-8-21 15:59 编辑

::该批处理使用于 判断进程内存大于指定的阀值重启该程序使用

@echo off
for /f "delims=" %%a in ('wmic PROCESS where "name='chrome.exe(进程名称)'" get ExecutablePath^,ProcessId^,WorkingSetSize /value^|find "="') do set "%%a"
>"%tmp%\$$.vbs" echo;if %WorkingSetSize%/1048576 ^> 800(内存阀值) then:WSH.echo 1:else:WSH.echo 0
echo;%WorkingSetSize% B
for /f %%a in ('cscript -nologo -e:vbscript "%tmp%\$$.vbs"') do set check=%%a
if "%check%" equ "1" (
   call C:\Restart.bat  ::(调用外部批处理重启进程)
)
pause
作者: PS2.0    时间: 2017-8-7 16:51

进程名是已知的还是未知的?
作者: 樵夫    时间: 2017-8-7 17:43

回复 2# PS2.0


   已知的进程名称
作者: qazplm    时间: 2017-8-7 18:46

  1. powershell "while(1){gps|?{$_.ProcessName -eq 'qq'}|%%{if(($_.WorkingSet/1048576) -gt 800){$_.Kill();start -FilePath $_.Path}};Start-Sleep -Seconds 1}"
复制代码

作者: qazplm    时间: 2017-8-7 19:22

  1. @echo off
  2. :1
  3. for /f "delims=" %%a in ('wmic PROCESS where "name='qq.exe'" get ExecutablePath^,ProcessId^,WorkingSetSize /value^|find "="') do set "%%a"
  4. >"%tmp%\$$.vbs" echo;if %WorkingSetSize%/1048576 ^> 800 then:WSH.echo 1:else:WSH.echo 0
  5. echo;%WorkingSetSize% B
  6. for /f %%a in ('cscript -nologo -e:vbscript "%tmp%\$$.vbs"') do set check=%%a
  7. if "%check%" equ "1" (
  8.     taskkill /f /pid %ProcessId% /t
  9.     start "" "%ExecutablePath%"
  10. )
  11. >nul ping /n 2 127.1
  12. goto :1
复制代码

作者: 樵夫    时间: 2017-8-8 09:16

本帖最后由 樵夫 于 2017-8-8 16:11 编辑

.................................
作者: 樵夫    时间: 2017-8-8 10:20

本帖最后由 樵夫 于 2017-8-8 10:23 编辑

回复 5# qazplm
作者: 老刘1号    时间: 2017-8-8 14:09

人家辛辛苦苦写完了你就改需求?
为什么不早点想清楚?
作者: 523066680    时间: 2017-8-8 15:06

回复 8# 老刘1号


    周瑜打黄盖,一个愿打,一个愿挨。
作者: 樵夫    时间: 2017-8-8 16:12

回复 8# 老刘1号


    说的好像不给钱的一样
作者: /zhqsystem/zhq    时间: 2017-8-10 18:16

我去,....原贴呢?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2