我尝试进行无限循环,以检查node.exe是否使用了一定数量的内存。如下所示:
:loop2
sleep
taskkill /f /im node.exe "memusage gt 85000" > nul
timeout /t 30
GOTO loop2但是,当taskkill被处理时,如何打破这个无限循环呢?
发布于 2015-10-18 08:58:25
set "Myprocess=node.exe"
:test
tasklist | find /i "%MyProcess%">nul && Taskkill /F /IM "%MyProcess%" & exit/b
timeout /t 30
goto:test发布于 2015-10-17 02:05:19
:loop2
sleep
( taskkill /f /im node.exe /fi "memusage gt 85000" | find "PID" >nul ) || (
timeout /t 30
GOTO loop2
)检查命令的输出以确定进程是否已终止。
编辑我以为PID字符串是独立于区域设置的,但事实并非如此。如果需要,可以将find命令替换为
find /i "node.exe" > nul在输出中搜索进程的名称,或者
findstr /r /c:" [1-9][0-9]*[02468][\., ]" > nul搜索是否存在进程ID (注意:所有进程ID都是4的倍数)
发布于 2015-10-17 02:18:33
适用于我,适用于任何地点。
: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
)https://stackoverflow.com/questions/33176126
复制相似问题