批处理文件,检查exe是否正在运行,如果是taskkill

时间:2013-08-16 20:28:39

标签: loops time batch-file flash taskkill

我遇到的问题是firefox Flashplayerplugin占用太多内存并且在不使用时会滞后我的系统。我找到的唯一解决方案是在使用firefox,卸载,重新安装或新的firefox安装或新配置文件无法解决时杀死flashplayerplugin;然而,不断检查任务管理器并将其杀死变得非常繁琐,并且flashplayerplugin似乎总是从它自己开始。

我遇到的问题是,是否可以创建一个批处理文件来检查FlashPlugin_11_8_800_94.exe是否正在运行并在一段时间(5-10秒)后将其终止并继续主动循环运行批处理文件,扫描如果FlashPlugin_11_8_800_94.exe再次启动,然后在5-10秒后杀死它,冲洗并重复?

编辑:

找到一个批处理文件并对其进行修改,但似乎也缺少一些周边来主动搜索它是否正在运行,即使它没有运行。但它无论如何都不起作用。

@echo off

:search
TASKLIST|FIND "FlashPlayerPlugin"
IF %ERRORLEVEL% = 0 THEN (GOTO found)
TIMEOUT /T 5
GOTO search

:found
taskkill /im FlashPlayerPlugin_11_8_800_94.exe

-

此批处理文件也不起作用。

set tasklist=%windir%\System32\tasklist.exe
set taskkill=%windir%\System32\taskkill.exe

-------------------------------------------------------
:STOPPROC
    set wasStopped=0
    set procFound=0
    set notFound_result=ERROR:
    set procName=%1
    for /f "usebackq" %%A in (`%taskkill% /IM %procName%`) do (
      if NOT %%A==%notFound_result% (set procFound=1)
    )
    if %procFound%==0 (
      echo The process was not running.
      goto :EOF
    )
    set wasStopped=1
    set ignore_result=INFO:
:CHECKDEAD
    "%windir%\system32\timeout.exe" 3 /NOBREAK
    for /f "usebackq" %%A in (`%tasklist% /nh /fi "imagename eq %procName%"`) do (
      if not %%A==%ignore_result% (goto :CHECKDEAD)
    )
    goto :EOF
-------------------------------------------------------

:MAIN 

call :STOPPROC FlashPlayerPlugin_11_8_800_94.exe

5 个答案:

答案 0 :(得分:2)

taskkill /im FlashPlugin_11_8_800_94* /f >nul 2>&1

答案 1 :(得分:2)

对于仍然可能会觉得有用的人: 这是一个小脚本,每隔5秒扫描任务列表以查找包含 processname 的进程。例如,如果您为 processname 添加“notepad”,它将结束“notepad.exe”和“notepad ++。exe”之类的进程。要使用该脚本,请将以下内容复制并粘贴到记事本中,并保存“simple_pk.cmd”。 processname 可以包含除双引号(“),&符号(&)或逗号(,)之外的任何字符。

::Simple monitor and kill process
@echo off&prompt :&mode con cols=50 lines=10

set processname=flashplayerplugin

:loop
cls&echo Searching for %processname%...
for /f "tokens=1 delims=," %%a in ('tasklist /fo csv ^|FINDSTR /I /C:"%processname%"') do call :killprocess %%a
ping -n 6 127.0.0.1>NUL
goto :loop


:killprocess
echo. |set /p d=killing %*...
taskkill /f /im "%*">nul 2>&1
set err=%errorlevel%
set success=Success
if not %err%==0 set success=fail (err code: %err%)
if %err%==128 set success=fail (process not found)
echo %success%&goto :eof

这是同一个脚本的略有不同的版本。这只会结束与整个名称完全匹配的进程:

::Simple monitor and kill process (exact name)
@echo off&prompt :&mode con cols=50 lines=10

set processname=FlashPlayerPlugin_11_8_800_94.exe

:loop
cls&echo Searching for %processname%...
for /f "tokens=1 delims=," %%a in ('tasklist /fo csv ^|FINDSTR /C:"%processname%"') do call :killprocess %%a
ping -n 6 127.0.0.1>NUL
goto :loop


:killprocess
set name=%*
set name=.,;%name:"=%;,.
echo %name%|FINDSTR /C:".,;%processname%;,.">nul || goto :eof
echo. |set /p d=killing %*...
taskkill /f /im "%*">nul 2>&1
set err=%errorlevel%
set success=Success
if not %err%==0 set success=fail (err code: %err%)
if %err%==128 set success=fail (process not found)
echo %success%&goto :eof

答案 2 :(得分:0)

您的IF不正确:

svg.selectAll(".dot")
    .data(data)
    .enter()
    .append("circle")
    .attr("class", "dot")
    .attr("cx", function(d) {return x(d.x);})
    .attr("cy", function(d) {return y(d.y);})
    .exit().remove()

答案 3 :(得分:0)

更简单的表格

@echo off
:search
TASKLIST|FIND "setup.exe"
IF %ERRORLEVEL% equ 0 (taskkill /im setup.exe
exit)
TIMEOUT /T 5
GOTO search

答案 4 :(得分:-1)

我正在查看顶部的第一段代码,我相信,我找到了一种方法。这就是我得到的;真的很简单。

@echo off
cls
:start
timeout /t 5
tasklist|find "explorer.exe"
goto found
goto start
:found
taskkill /f /im explorer.exe
goto start 

当然,任何程序都可以使用。