Board logo

标题: [系统相关] 求杀指定进程以外所有进程的代码 [打印本页]

作者: dwz    时间: 2008-10-31 05:25     标题: 求杀指定进程以外所有进程的代码

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

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

思路先用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. )
复制代码

作者: terse    时间: 2008-10-31 17:09

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

[ 本帖最后由 terse 于 2008-10-31 17:10 编辑 ]
作者: batman    时间: 2008-10-31 17:19

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. )
复制代码

作者: dwz    时间: 2008-11-1 02:57

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

我差点要怀疑这个帖子的作者是不是楼主马甲:
http://bbs.verybat.org/thread-13764-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2