|
本帖最后由 dos时代菜鸟 于 2015-6-22 20:24 编辑
再来一个 wmic 的,可以精确到具体commandline 的,并包含子目录程序判断。
---k3.cmd-------------
- @echo off && setlocal ENABLEDELAYEDEXPANSION
- set 例外=cmd.exe,conhost.exe,explorer.exe,csrss.exe,lsass.exe,lsm.exe,services.exe,svchost.exe,winlogon.exe,wininit.exe,smss.exe,audiodg.exe
- if "%~nx1"=="" ( set p=%~dp1) else (set p=%~dpnx1\)
- set p=!p:\=\\!
- for /f "skip=2 delims=, tokens=2,3" %%r in ('wmic process where "ExecutablePath like '!p!%%'" get executablepath^,processid^,status /format:csv ') do (
- set /a lw=0 && for %%x in (!例外!) do (if /i "%%x"=="%%~nxr" set /a lw=1 )
- if !lw! equ 0 (echo ------发现 %%~r,%%s----------- && c:\windows\system32\taskkill /f /pid %%s 2>nul)
- )
- pause
复制代码
win7 x86测试通过。
方法:拖动。比如:你要终止"c:\program files\"里面的所有程序,就把 "c:\program files" 这个文件夹拖动到此批处理上即可。不过有的系统进程是无权关闭的。
或者手动输入: 或者
原理:通过wmic process 指令获取当前进程pid/命令句柄,并对命令句柄逐一筛选,如果执行的是指定文件夹中的文件,在进一步判断,如果不是被排除的就中断之。
涉及命令:wmic/taskkill/for/set/if/echo |
|