首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用taskkill中断无限循环

使用taskkill中断无限循环
EN

Stack Overflow用户
提问于 2015-10-17 01:20:24
回答 5查看 752关注 0票数 1

我尝试进行无限循环,以检查node.exe是否使用了一定数量的内存。如下所示:

代码语言:javascript
复制
:loop2
sleep
taskkill /f /im node.exe "memusage gt 85000" > nul
timeout /t 30
GOTO loop2

但是,当taskkill被处理时,如何打破这个无限循环呢?

EN

回答 5

Stack Overflow用户

发布于 2015-10-18 08:58:25

代码语言:javascript
复制
set "Myprocess=node.exe"
:test
tasklist | find /i "%MyProcess%">nul  && Taskkill /F /IM  "%MyProcess%" & exit/b
timeout /t 30
goto:test
票数 2
EN

Stack Overflow用户

发布于 2015-10-17 02:05:19

代码语言:javascript
复制
:loop2
    sleep
    ( taskkill /f /im node.exe /fi "memusage gt 85000" | find "PID" >nul ) || (
        timeout /t 30
        GOTO loop2
    )

检查命令的输出以确定进程是否已终止。

编辑我以为PID字符串是独立于区域设置的,但事实并非如此。如果需要,可以将find命令替换为

代码语言:javascript
复制
find /i "node.exe" > nul

在输出中搜索进程的名称,或者

代码语言:javascript
复制
findstr /r /c:" [1-9][0-9]*[02468][\., ]" > nul

搜索是否存在进程ID (注意:所有进程ID都是4的倍数)

票数 1
EN

Stack Overflow用户

发布于 2015-10-17 02:18:33

适用于我,适用于任何地点。

代码语言:javascript
复制
:loop2
sleep
set _tk=
for /f "skip=1 delims=, tokens=2" %%A in ('tasklist /fi "imagename eq node.exe" /fi "memusage gt 85000" /fo csv') do (
    taskkill /f /pid %%~A
    set _tk=1
)
if not "%_tk%"=="1" (
    timeout /t 30
    GOTO loop2
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33176126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档