
批处理 如何结束多个进程名相同的进程
展开全部
2个方法:
1:
wmic process where name='QQ.exe' call terminate
2:
taskkill /f /t /im QQ.exe
1比2更强大,一般上面2个结合一起用最好了,
因为有时候一个是结束不掉的,特别是进程里有进程...(树)
当然每次都要改QQ.exe很麻烦,下面是我自己写的批处理代码,保护系统必要进程而结束所有应用进程,比重启电脑还干净,非常实用:
:::::::::::::::::::::::::::::::::::::settask.bat文件内容::
title 进程清理 %date%
@echo off
:start
setlocal enabledelayedexpansion
call setcolor
Tasklist /svc
echo ^|===========================================================^|
wmic process get executablepath
echo ^|===========================================================^|
set dotaskkill=yes
for /f "skip=3 delims=" %%i in ('wmic process get executablepath') do (
set kbuf=%%i
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
call :killtask !kbuf!
)
pause>nul
endlocal
goto last
:killtask
::----------------------------------------------------
if /i "%1"=="csrss.exe" set dotaskkill=no
if /i "%1"=="lsass.exe" set dotaskkill=no
if /i "%1"=="services.exe" set dotaskkill=no
if /i "%1"=="smss.exe" set dotaskkill=no
if /i "%1"=="spoolsv.exe" set dotaskkill=no
if /i "%1"=="svchost.exe" set dotaskkill=no
if /i "%1"=="winlogon.exe" set dotaskkill=no
::----------------------------------------------------
if /i "%1"=="zhudongfangyu.exe" set dotaskkill=no
if /i "%1"=="360sd.exe" set dotaskkill=no
if /i "%1"=="360rp.exe" set dotaskkill=no
::----------------------------------------------------
if /i "%1"=="explorer.exe" set dotaskkill=no
if /i "%1"=="cmd.exe" set dotaskkill=no
::----------------------------------------------------
if "%dotaskkill%"=="yes" (
echo ----------------------------------------------------------------
wmic process where name='%1' call terminate
taskkill /f /t /im %1
echo 已经关闭进程%1
echo ----------------------------------------------------------------
)
if "%dotaskkill%"=="no" (
echo 进程%1被zhoup设定为保护
)
set dotaskkill=yes
goto :eof
:last
::::::::::::::::::::::::::::结束了
(保存后看看有没有换行地方没做好,因为我来回答:给的宽度和记事本里的宽度不一样,可能出现编码方式导致换行不对)
1:
wmic process where name='QQ.exe' call terminate
2:
taskkill /f /t /im QQ.exe
1比2更强大,一般上面2个结合一起用最好了,
因为有时候一个是结束不掉的,特别是进程里有进程...(树)
当然每次都要改QQ.exe很麻烦,下面是我自己写的批处理代码,保护系统必要进程而结束所有应用进程,比重启电脑还干净,非常实用:
:::::::::::::::::::::::::::::::::::::settask.bat文件内容::
title 进程清理 %date%
@echo off
:start
setlocal enabledelayedexpansion
call setcolor
Tasklist /svc
echo ^|===========================================================^|
wmic process get executablepath
echo ^|===========================================================^|
set dotaskkill=yes
for /f "skip=3 delims=" %%i in ('wmic process get executablepath') do (
set kbuf=%%i
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
set kbuf=!kbuf:*\=!
call :killtask !kbuf!
)
pause>nul
endlocal
goto last
:killtask
::----------------------------------------------------
if /i "%1"=="csrss.exe" set dotaskkill=no
if /i "%1"=="lsass.exe" set dotaskkill=no
if /i "%1"=="services.exe" set dotaskkill=no
if /i "%1"=="smss.exe" set dotaskkill=no
if /i "%1"=="spoolsv.exe" set dotaskkill=no
if /i "%1"=="svchost.exe" set dotaskkill=no
if /i "%1"=="winlogon.exe" set dotaskkill=no
::----------------------------------------------------
if /i "%1"=="zhudongfangyu.exe" set dotaskkill=no
if /i "%1"=="360sd.exe" set dotaskkill=no
if /i "%1"=="360rp.exe" set dotaskkill=no
::----------------------------------------------------
if /i "%1"=="explorer.exe" set dotaskkill=no
if /i "%1"=="cmd.exe" set dotaskkill=no
::----------------------------------------------------
if "%dotaskkill%"=="yes" (
echo ----------------------------------------------------------------
wmic process where name='%1' call terminate
taskkill /f /t /im %1
echo 已经关闭进程%1
echo ----------------------------------------------------------------
)
if "%dotaskkill%"=="no" (
echo 进程%1被zhoup设定为保护
)
set dotaskkill=yes
goto :eof
:last
::::::::::::::::::::::::::::结束了
(保存后看看有没有换行地方没做好,因为我来回答:给的宽度和记事本里的宽度不一样,可能出现编码方式导致换行不对)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询