Board logo

标题: 如何用批处理结束两个名字相同的进程中的一个 [打印本页]

作者: zxlxsqzy     时间: 2007-7-2 17:56    标题: 如何用批处理结束两个名字相同的进程中的一个

我们这里的系统为了限制下载,用了个关键字屏蔽的Explorer.exe的软件
但是如果用 taskkill /f /im Explorer.exe就会连桌面进程 explorer.exe一起结束掉
想请教一下有没有什么办法只结束掉关键字进程Explorer.exe而不结束掉桌面进程explorer.exe?
我不想每次都先用tasklist找Explorer.exe的PID值
作者: AlexZhang     时间: 2007-7-2 22:21
用pid
作者: qinbuer     时间: 2007-7-2 22:53
PID是无法直接分辨两个EXPLORER的,它只是进程运行时系统随机为进程分配

的,并不代表专门的进程,所以单纯只看PID,你不会知道到底应该终止哪个

EXPLORER,但我们可以通过WMIC分析两个进程的路径判断,只要是非

C:\WINDOWS下的EXPLORER就终止该进程PID

[ Last edited by qinbuer on 2007-7-3 at 12:04 PM ]
作者: lxmxn     时间: 2007-7-3 08:11
先taskkill /f /im explorer.exe,再start %systemroot%\explorer.exe。

或者如楼上兄弟说的,查看程序的路径来判断。
作者: zxlxsqzy     时间: 2007-7-3 23:58
我是在网吧上网的。
如果用taskkill /f /im  Explorer.exe 那样就会连系统的桌面进程explorer.exe也一起结束掉了,再加载explorer会造成系统托盘的计费系统的图标看不到而无法结帐。
当然我也可能先用tasklist查出Explorer.exe进程的PID值(这里系统进程和关键字屏蔽进程的名字差别只在与系统进程全小写的,,关键字屏蔽的进程第一个字母是大写的,所以可以很清楚判断哪个才是所需要结束的),然后用taskkill /f /pid +PID值来结束
可是因为系统做了很多的限制,每次都要这样查我觉得很烦。
我想请问一下的是有没有可能先用tasklist列出进程信息之后,用find的功能查找出关键字进程后的进程PID值,然后用taskkill 结束进程时调用查找出的值呢?
作者: lovehack2006     时间: 2008-1-22 19:18
我有一个更简单的问题,如果我发现有两个 explorer.exe 的话

就执行一个命令说,这个机子中毒了,应该怎么写呀???

LX大哥请你帮帮我!!
作者: lovehack2006     时间: 2008-1-22 19:19
我想过用PID是否相等来判断这个机子是否有两个explorer.exe
假如有一个的话,那么肯定是相等的,如果有两个的话,肯定是不相等的。
但是判断相等要怎么做呀?
作者: slore     时间: 2008-1-22 19:31
tasklist /FI "IMAGENAME eq explorer.exe"
系统是不区分大小写的。。。
所以会得到2个。。然后你findstr下(这个区别大小写)

然后自己再做你想做的。。。对了上面的可以得到PID哦
作者: terse     时间: 2008-1-22 19:55
这样试试
@echo off
for /f "tokens=1,2" %%i in ('tasklist /nh /FO TABLE') do (
if "%%i" == "Explorer.exe" taskkill /FI "pid eq %%j"
)
pause
taskkill /FI "pid eq %%j" 可能要加上 /f

[ Last edited by terse on 2008-1-22 at 08:02 PM ]
作者: lovehack2006     时间: 2008-1-22 22:26
大家有没有看到我的问题呢??

我的问题是,如果我发现有两个 explorer.exe 的话,就向服务器发一个消息

说,这台机子可能中毒了。要怎么做呢???我P是个大菜鸟呀。什么不会!!
作者: yichu     时间: 2008-1-24 17:04
谢谢9楼的脚本,让我隐藏指定程序进程的脚本有进展