[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[已解决]判断进程使用内存大于指定阀值重启程序

本帖最后由 樵夫 于 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

进程名是已知的还是未知的?
环境所限,需要使用 PowerShell 2.0 版本。

TOP

回复 2# PS2.0


   已知的进程名称

TOP

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

TOP

  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
复制代码

TOP

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

.................................

TOP

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

回复 5# qazplm

TOP

人家辛辛苦苦写完了你就改需求?
为什么不早点想清楚?

TOP

回复 8# 老刘1号


    周瑜打黄盖,一个愿打,一个愿挨。

TOP

回复 8# 老刘1号


    说的好像不给钱的一样

TOP

我去,....原贴呢?
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

返回列表