[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 求杀指定进程以外所有进程的代码

我的意思是假设我的电脑每次启动有1.exe 2.exe.....20.exe这20个进程运行。

现在我要结束除了1-5以外的所有进程,我的意思是另外的15个进程我不一定知道名字,光是通过让批处理判断只要不是我要保留的那5个进程都全部结束掉,请问这个批处理该怎么写

我差点要怀疑这个帖子的作者是不是楼主马甲:
http://bbs.verybat.org/thread-13764-1-1.html
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

谢谢两位大哥!
请问可不可以省去输入保留进程这一部啊?
假设我知道这5个进程的名字,我每次都只保留这5个,所以只要运行这个批处理就可以了。

TOP

terse兄所言即是,修改如下:
  1. @echo off
  2. echo 请输入你要保留的进程名(不含后缀),中间用空格格开
  3. set /p code=在此输入:
  4. for %%i in (%code% tasklist) do set "_%%i=a"
  5. for /f "delims=" %%i in ('tasklist^|findstr "exe"') do (
  6.      if not defined  _%%i taskkill /im "%%i" /f>nul
  7. )
复制代码
***共同提高***

TOP

觉得里面的FOR 可以在前面先处理完 再FOR
也就是先赋值 已知进程

[ 本帖最后由 terse 于 2008-10-31 17:10 编辑 ]

TOP

思路先用tasklist获得所有在运行的进程名,然后用for语句进行判断是否是要保留的进程:
  1. @echo off
  2. echo 请输入你要保留的进程名,中间用空格格开
  3. set /p code=在此输入:
  4. for /f "delims=" %%a in ('tasklist^|findstr "exe"') do (
  5.      for %%i in (%code% tasklist) do if /i "%%~na" neq "%%~ni" set "flag=a"
  6.      if defined flag taskkill /im "%%a" /f>nul&set "flag="
  7. )
复制代码
***共同提高***

TOP

返回列表