Board logo

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

作者: heike045    时间: 2020-4-2 23:03     标题: 批处理如何让内存占用达到多少百分比的时候关闭某个软件?

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

批处理如何让内存占用达到多少百分比的时候关闭某个软件?
作者: went    时间: 2020-4-3 11:21

  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
复制代码
进程名和内存自行修改
作者: heike045    时间: 2020-4-3 11:30

回复 2# went


    如果设置为60秒检测一次?
作者: went    时间: 2020-4-3 11:32

回复 3# heike045

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

作者: heike045    时间: 2020-4-3 11:36

回复 4# went


    非常感谢!
作者: heike045    时间: 2020-4-3 11:46

回复 4# went

有个问题,内存都还没达到设置的值,怎么就自动结束进程了?
作者: went    时间: 2020-4-3 11:57

回复 6# heike045


        显示和结束进程命令之间有延迟吧,实际上已经达到了,不然不会关闭
作者: heike045    时间: 2020-4-3 12:03

回复 7# went


    好的 谢谢!
作者: heike045    时间: 2020-4-3 12:33

回复 7# went


    请教大神,如何把3个BAT的内容 融入到同一个BAT中,先执行第一个代码,然后延迟60秒执行第二个代码,然后延迟60秒执行第三个代码,然后延迟60秒再跳回去第一个代码,如此循环
作者: went    时间: 2020-4-3 13:06

  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 所在行替换成你的代码,提权代码须放在开头
作者: heike045    时间: 2020-4-3 13:24

回复 10# went


    有点拼不起来 能否帮我弄一下,按照文件顺序来。
作者: went    时间: 2020-4-3 13:45

本帖最后由 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
作者: heike045    时间: 2020-4-3 13:51

回复 12# went


    太完美了 谢谢大神!
作者: heike045    时间: 2020-4-3 15:00

回复 12# went


    遇到个问题,上面那个自动关闭进程的  只会把软件关掉 不会把进程结束释放内存
作者: heike045    时间: 2020-4-3 21:35

回复 12# went


    在吗 大神。。。。。
作者: went    时间: 2020-4-3 22:43

回复 15# heike045


   不好意思,我也不知道
作者: heike045    时间: 2020-4-4 16:24     标题: 如何用批处理让内存占用数大于设定值时 关闭某个进程释放内存?

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

如何用批处理让内存占用数大于设定值时 关闭某个进程释放内存?
作者: wujunkai    时间: 2020-4-4 16:28

回复 1# heike045

    http://www.bathome.net/thread-55285-1-1.html拿这个改一下就可以了
作者: heike045    时间: 2020-4-4 16:32

回复 2# wujunkai


    怎么改  能否请教下大神, 他这个没法自动结束进程释放内存,只会关闭软件
作者: wujunkai    时间: 2020-4-4 16:35

回复 19# heike045


    额,你是不是对进程有什么误解。
    一般情况下,软件关闭,对应的进程就会关闭
作者: Batcher    时间: 2020-4-6 10:44

回复 19# heike045


    能否详细说明一下【他这个没法自动结束进程释放内存】,请把你的测试用例和测试结果分别发出来看看。




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