--- --
--- -- (1)
for /f "skip=3 " %%i in ('wmic process get name') do (
for %%b in (smss.exe,csrss.exe,winlogon.exe,services.exe,lsass.exe,
svchost.exe,Explorer.exe) do if /i not %%i==%%b taskkill /im %%i /t
)
pause
错误处: 比如 'wmic process get name'得到的进程名是 services.exe , 处理 if 句 if /i not services.exe ==smss.exe taskkill /im services.exe /t ,然后再循环 if /i not services.exe ==csrss.exe taskkill /im services.exe /t ……
结果并不能保留 smss.exe,csrss.exe,winlogon.exe,services.exe,lsass.exe,
svchost.exe,Explorer.exe (条件是我用pskill )
--- -- (2)
for /f "skip=3" %%i in ('wmic process get name') do ( if /i not "%%
i"==smss.exe if /i not "%%i"==csrss.exe if /i not "%%i"==winlogon.exe
if /i not "%%i"==services.exe if /i not "%%i"==lsass.exe if /i not "%%
i"==svchost.exe if /i not "%%i"==Explorer.exe taskkill /f /im "%%i")
pause
错误处:
再以services.exe 为例, 处理 if 句 ,我认为会如下处理的:
if /i not services.exe ==smss.exe if /i not services.exe ==csrss.exe if /i not services.exe==winlogon.exe …… if /i not services.exe==Explorer.exe taskkill /f /im services.exe
依次 经过 if 的过滤, 而实际上 只处理第一个 if 句 :
if /i not services.exe==smss.exe 就执行 taskkill /f /im services.exe 了 !
不解啊!
--- -- (3)
还有一个思路就是 用 'wmic process get name' 列出进程列表 ,再找出
smss.exe,csrss.exe,winlogon.exe,services.exe,lsass.exe,svchost.exe,Explorer.exe 删除他们后留下要结束的进程, 一句话就是过滤, 不知可不可行 ?
(我不会过滤)
请高手指教, 或者有其他方法也行 ,多谢 !!