Board logo

标题: 关于TASKKILL的筛选器的问题 [打印本页]

作者: huzepiao     时间: 2009-10-7 19:14    标题: 关于TASKKILL的筛选器的问题

小弟刚刚学批处理,想写一条用来清除除CMD.EXE,ALG.EXE,SVCHOST.EXE,WINLOGON.EXE,SERVICES.EXE,LSASS.EXE
以外的所有进程的命令,但是这样写排除不了上述进程......
请问要怎么改?

taskkill /f /im explorer.exe /t /fi "imagename ne CMD.EXE" /fi "imagename ne ALG.EXE" /fi "imagename ne SVCHOST.EXE" /fi "imagename ne WINLOGON.EXE" /fi "imagename ne SERVICES.EXE" /fi "imagename ne LSASS.EXE" /IM *
作者: Hanyeguxing     时间: 2009-10-7 20:00
仅有Tasklist才可以使用连续的 /fi,Taskkill不可以
以下均在批处理中使用:
for /f "delims=," %%i in ('tasklist /nh /FO CSV /fi "imagename ne tasklist.EXE" /fi "imagename ne taskkill.EXE" /fi "imagename ne FIND.EXE" /fi "imagename ne CMD.EXE" /fi "imagename ne ALG.EXE" /fi "imagename ne SVCHOST.EXE" /fi "imagename ne WINLOGON.EXE" /fi "imagename ne SERVICES.EXE" /fi "imagename ne LSASS.EXE" ^| find /i ".exe"') do taskkill /f /im %%i>nul
说明:使用中,必须使用tasklist 将tasklist.EXE taskkill.EXE FIND.EXE CMD.EXE 排除。
find /i ".exe用以排除内核进程和空闲进程.

实际使用中,更推荐使用findstr /v 进行排除,比使用 /fi 简单
for /f "delims=," %%i in ('tasklist /nh /FO CSV ^| findstr /v /i "tasklist.EXE taskkill.EXE findstr.EXE CMD.EXE ALG.EXE SVCHOST.EXE WINLOGON.EXE SERVICES.EXE LSASS.EXE" ^| findstr /i "\.exe"') do taskkill /f /im %%i>nul
说明:使用中,必须使用findstr /v 将tasklist.EXE taskkill.EXE findstr.EXE CMD.EXE 排除。
findstr /i "\.exe用以排除内核进程和空闲进程.

[ Last edited by Hanyeguxing on 2009-10-7 at 21:23 ]
作者: huzepiao     时间: 2009-10-7 22:00
很感谢,我去看看用法