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

[文件操作] 批处理如何让内存占用达到多少百分比的时候关闭某个软件?

本帖最后由 heike045 于 2020-4-4 16:37 编辑

批处理如何让内存占用达到多少百分比的时候关闭某个软件?

  1. @echo off
  2. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  3. REM name
  4. set "process=powershell.exe"
  5. REM memory(KB)
  6. set "m=73800"
  7. :loop
  8. echo %process%
  9. echo %m%KB
  10. echo.
  11. tasklist /fi "IMAGENAME eq %process%" | findstr /i "pid = %process%"
  12. taskkill /f /fi "IMAGENAME eq %process%" /fi "MEMUSAGE gt %m%"
  13. timeout /t 2 /nobreak  >nul 2>nul & cls
  14. goto :loop
  15. pause&exit
复制代码
进程名和内存自行修改

TOP

回复 2# went


    如果设置为60秒检测一次?

TOP

回复 3# heike045

/t后面是秒数,当前是2秒检查一次
  1. timeout /t 2 /nobreak
复制代码

TOP

回复 4# went


    非常感谢!

TOP

回复 4# went

有个问题,内存都还没达到设置的值,怎么就自动结束进程了?

TOP

回复 6# heike045


        显示和结束进程命令之间有延迟吧,实际上已经达到了,不然不会关闭

TOP

回复 7# went


    好的 谢谢!

TOP

回复 7# went


    请教大神,如何把3个BAT的内容 融入到同一个BAT中,先执行第一个代码,然后延迟60秒执行第二个代码,然后延迟60秒执行第三个代码,然后延迟60秒再跳回去第一个代码,如此循环

TOP

  1. @echo off
  2. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  3. :begin
  4. REM CODE 1
  5. timeout /t 60 /nobreak  >nul 2>nul
  6. REM CODE 2
  7. timeout /t 60 /nobreak  >nul 2>nul
  8. REM CODE 3
  9. timeout /t 60 /nobreak  >nul 2>nul
  10. goto :begin
  11. pause&exit
复制代码
回复 9# heike045
REM 所在行替换成你的代码,提权代码须放在开头

TOP

回复 10# went


    有点拼不起来 能否帮我弄一下,按照文件顺序来。

TOP

本帖最后由 went 于 2020-4-3 13:54 编辑
  1. @echo off&color 2f
  2. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  3. set "s=60"
  4. :loop
  5. REM --------------------------------CODE1-----------------------------------
  6. taskkill /f /im "werfault.exe"
  7. timeout /t %s% /nobreak  >nul 2>nul
  8. REM --------------------------------CODE2-----------------------------------
  9. tasklist /FI "username eq dc2-user" | find /C "vds-qt.exe" > temp.txt
  10. set /p num= < temp.txt
  11. del /F temp.txt
  12. echo %num%
  13. if "%num%" == "0" del /F C:\Users\dc2-user\AppData\Roaming\VDS\mncache.dat C:\Users\dc2-user\AppData\Roaming\VDS\mnpayments.dat && start /D "C:\Program Files\vds" vds-qt.exe
  14. timeout /t %s% /nobreak  >nul 2>nul
  15. REM --------------------------------CODE3-----------------------------------
  16. REM name
  17. set "process=vds-qt.exe"
  18. REM memory(KB)
  19. set "m=6144000"
  20. echo %process%
  21. echo %m%KB
  22. echo.
  23. tasklist /fi "IMAGENAME eq %process%" | findstr /i "pid = %process%"
  24. taskkill /f /fi "IMAGENAME eq %process%" /fi "MEMUSAGE gt %m%"
  25. timeout /t %s% /nobreak  >nul 2>nul
  26. cls & goto :loop
  27. pause&exit
复制代码
回复 11# heike045

TOP

回复 12# went


    太完美了 谢谢大神!

TOP

回复 12# went


    遇到个问题,上面那个自动关闭进程的  只会把软件关掉 不会把进程结束释放内存

TOP

回复 12# went


    在吗 大神。。。。。

TOP

返回列表