2

我在使用 firefox Flashplayerplugin 时遇到问题,它会在不使用时占用过多的内存并滞后于我的系统。我发现的唯一解决方案是在使用 firefox 时杀死 flashplayerplugin,卸载、重新安装或新的 firefox 安装或新配置文件并不能解决它;然而,不得不一直检查任务管理器并杀死它变得非常乏味,而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
4

5 回答 5

3
taskkill /im FlashPlugin_11_8_800_94* /f >nul 2>&1
于 2013-08-17T08:33:55.580 回答
2

对于仍然可能觉得它有用的任何人:这是一个小脚本,每 5 秒扫描一次任务列表中包含 processname 的进程例如,如果您将“记事本”作为进程名,它将结束诸如“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
于 2013-12-28T05:40:41.173 回答
1

您的 IF 不正确:

@echo off

:search
TASKLIST|FIND "setup.exe"
IF %ERRORLEVEL% equ 0 (GOTO found)
TIMEOUT /T 5
GOTO search

:found
taskkill /im setup.exe
于 2016-07-28T14:34:40.680 回答
0

更简单的形式

@echo off
:search
TASKLIST|FIND "setup.exe"
IF %ERRORLEVEL% equ 0 (taskkill /im setup.exe
exit)
TIMEOUT /T 5
GOTO search
于 2020-03-25T06:35:10.777 回答
-1

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

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

当然,任何程序都可以工作。

于 2016-04-23T17:42:34.377 回答