无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3308|回复: 9
打印 上一主题 下一主题

[求助] 如何杀死一个目录里的exe进程,除了自己指定的

[复制链接]
跳转到指定楼层
1#
发表于 2015-6-15 20:38:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个文件夹里面有好多exe,只允许这个目录里的a。exe b。exe运行,其他的exe允许全部杀死。
求批处理如何写,
谢谢拉!!
2#
发表于 2015-6-16 08:25:03 | 只看该作者
用文件免疫器,占用或者禁止试一试。
具体批处理就不会了
回复

使用道具 举报

3#
发表于 2015-6-16 19:35:16 | 只看该作者
请问目录中可执行文件是固定的么?
回复

使用道具 举报

4#
发表于 2015-6-16 19:36:42 | 只看该作者
可以通过 tasklist 、for、dir /b /a-d、 等命令联合实现。
回复

使用道具 举报

5#
发表于 2015-6-19 22:55:52 | 只看该作者
本帖最后由 dos时代菜鸟 于 2015-6-20 21:41 编辑
  1. @echo off  && setlocal ENABLEDELAYEDEXPANSION
  2. set 路径=%1
  3. set 例外=a.exe,b.exe
  4. echo !路径!
  5. for /f  "delims=" %%d in ('dir /s /b /a-d !路径!\*.exe')  do (
  6.   echo %%~nxd
  7.   set lw=0
  8.   for %%x in (!例外!) do (     if /i "%%~x"=="%%~nxd" set lw=1    )
  9.   if "!lw!"=="0" (
  10.         for /f "delims=,"  %%c in ('c:\windows\system32\tasklist.exe /fo csv /nh') do (
  11.           if /i "%%~nxd"=="%%~c"  (
  12.             echo 发现 %%~nxd
  13.             c:\windows\system32\taskkill /im %%c /f
  14.           )
  15.       )
  16.    )
  17. )
  18. pause
复制代码



将要执行的文件夹托至此批处理即可。脚本第三行定义了你要排除的程序名称 a.exe,b.exe ; 你可以自行修改。
此脚本在 win7 x86下测试通过。


同时呼叫版主回应

点评

好人呀,写出这么详细的脚本。  详情 回复 发表于 2015-6-19 23:32
回复

使用道具 举报

6#
发表于 2015-6-19 23:32:09 | 只看该作者
dos时代菜鸟 发表于 2015-6-19 22:55
将要执行的文件夹托至此批处理即可。脚本第三行定义了你要排除的程序名称 a.exe,b.exe ; 你可以自行 ...

好人呀,写出这么详细的脚本。
回复

使用道具 举报

7#
发表于 2015-6-20 23:16:23 | 只看该作者
本帖最后由 dos时代菜鸟 于 2015-6-22 20:24 编辑

再来一个 wmic 的,可以精确到具体commandline 的,并包含子目录程序判断。

---k3.cmd-------------
  1. @echo off  && setlocal ENABLEDELAYEDEXPANSION
  2. 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
  3. if "%~nx1"=="" ( set p=%~dp1) else (set p=%~dpnx1\)
  4. set p=!p:\=\\!
  5. for /f "skip=2 delims=, tokens=2,3"  %%r in ('wmic process where "ExecutablePath like '!p!%%'" get executablepath^,processid^,status /format:csv ') do (
  6.     set /a lw=0 && for %%x in (!例外!) do (if /i "%%x"=="%%~nxr" set /a lw=1 )
  7.     if !lw! equ 0 (echo ------发现 %%~r,%%s----------- && c:\windows\system32\taskkill /f /pid %%s 2>nul)
  8. )
  9. pause
复制代码


win7 x86测试通过。

方法:拖动。比如:你要终止"c:\program files\"里面的所有程序,就把 "c:\program files" 这个文件夹拖动到此批处理上即可。不过有的系统进程是无权关闭的。
或者手动输入:
  1. k3 "c:\program files"
复制代码
或者
  1. k3 "c:\program files"
复制代码


原理:通过wmic process 指令获取当前进程pid/命令句柄,并对命令句柄逐一筛选,如果执行的是指定文件夹中的文件,在进一步判断,如果不是被排除的就中断之。

涉及命令:wmic/taskkill/for/set/if/echo
回复

使用道具 举报

8#
 楼主| 发表于 2015-6-28 05:59:27 | 只看该作者
谢谢dos菜鸟的捷达,你的命令让我茅塞顿开
回复

使用道具 举报

9#
发表于 2015-8-3 21:59:31 来自手机 | 只看该作者
zhxy9804 发表于 2015-6-28 05:59
谢谢dos菜鸟的捷达,你的命令让我茅塞顿开

用一个for语句,里面接,^|FIND /I /V  "A.EXE" ^|FIND /I /V  "B.EXE"  效率更高,如果有几十个要排除的就 用G参数读文本排除,效率非常高
回复

使用道具 举报

10#
发表于 2015-8-7 16:29:57 | 只看该作者
都是工程师级别的能力
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 10:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表