中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理只结束相同进程中的一个
作者:
标题: 批处理只结束相同进程中的一个 上一主题 | 下一主题
abczxc
初级用户





积分 135
发帖 53
注册 2007-4-28
状态 离线
『楼 主』:  批处理只结束相同进程中的一个

@echo off
for /f "tokens=1,2" %%i in ('tasklist') do (
    echo %%i | findstr /i "notepad.exe" 1>nul 2>nul && (
        ntsd -c q -p %%j & set qq=%%i
    )
)
if /i not "%qq%"=="notepad.exe" echo ~~~~~~没看到该程序~~~~~~~
echo.
pause

notepad.exe 只是一个例子
现在的情况是C:\WINDOWS\system32\svchost.exe是正常的程序,
但也有个      C:\WINDOWS\\svchost.exe坏程序
很显然上面的代码不行了,谁能给一个能只结束相同进程中一个的
批处理我,脚本也行

[ Last edited by abczxc on 2008-4-25 at 04:38 PM ]

2007-4-30 10:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

直接根据路径杀掉不就可以了吗?
搜索 wmic 。

2007-4-30 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bingxiao20
初级用户





积分 68
发帖 31
注册 2007-3-23
状态 离线
『第 3 楼』:  

根据PID进程号查杀应该好点吧 也简单点

2007-4-30 10:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by bingxiao20 at 2007-4-30 10:56 AM:
根据PID进程号查杀应该好点吧 也简单点

应该做不到:如何去判断 坏程序的PID号?
还是斑竹的办法好点,用WMIC取得该程序的路径,如何不符合设定,就干掉它

2007-4-30 11:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 5 楼』:  


Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell")
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if ps.executablepath="C:\WINDOWS\svchost.exe" then
WshSHell.Run ("ntsd -c q -p "&ps.handle),vbHide
end if
next
Set WshSHell = Nothing
WScript.Quit(0)




好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-4-30 11:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bingxiao20
初级用户





积分 68
发帖 31
注册 2007-3-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by baomaboy at 2007-4-29 10:11 PM:
[code]
Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell")
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if ps.executablepath=&q ...

这个倒是可以用来杀掉那些病毒李鬼进程了。。。

2007-4-30 11:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by baomaboy at 2007-4-30 11:11 AM:
[code]
Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell")
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if ps.executablepath=&q ...

发现兄写了好多的vbs代码,都写的不错啊!但是结构看起来不是很明确,我不知道你是不是专门用了软件来编写 vbs 的,如果是这样那就另当别论。

想我开始学的时候,都是用NOTEPAD直接来的,现在想来头都大。

2007-4-30 12:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by youxi01 at 2007-4-30 12:52:


发现兄写了好多的vbs代码,都写的不错啊!但是结构看起来不是很明确,我不知道你是不是专门用了软件来编写 vbs 的,如果是这样那就另当别论。

想我开始学的时候,都是用NOTEPAD直接来的,现在想来头都大。

最初我也用N的,后来一直只用是EmEditor了。

呵呵 没用过专门的软件呢还,如果用了也许结构不至于那么差了,写一个东西我总是是想到哪写到哪,所以有时为了个忽然想到的功能块或错误处理而随意改变程序的结构。另外我在 管理”新建“菜单中的文件类型→VBS版 9楼中 说:

  Quote:
①由于新建VBS模版的原因,代码中会有多于的代码 (无用代码),更由于我懒而没删除,大家凑合看吧。
②基础差,没好的编码习惯,想到那写到哪,所以可能有捷径的代码我用了很曲折的方法,还是由于懒没有改写。
我的目的就是,可以学习到方法和技巧,并可以使用,至于美化格式,精简代码,等我有时间和精力时也许会那么做 。所以 希望大家不要扔鸡蛋啊 ,最初加密就是怕大家砸我 ^_^。





好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-4-30 13:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abczxc
初级用户





积分 135
发帖 53
注册 2007-4-28
状态 离线
『第 9 楼』:  

Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell")
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if ps.executablepath="C:\WINDOWS\system32\syx\syy\syz\sss\s.exe" then
WshSHell.Run ("ntsd -c q -p "&ps.handle),vbHide
end if
next
Set WshSHell = Nothing
WScript.Quit(0)
楼上的vbs真不错,但是我电脑上面有些程序用这个结束不了啊
如 C:\WINDOWS\system32\syx\syy\syz\sss\s.exe 这个程序就结束不了,这是怎么回事?

2007-4-30 21:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abczxc
初级用户





积分 135
发帖 53
注册 2007-4-28
状态 离线
『第 10 楼』:  

还是搞清楚了,baomaboy写的这个脚本真好。谢谢啊
原来是路径搞错了,用mt -pslist看了一下好了

2007-4-30 21:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abczxc
初级用户





积分 135
发帖 53
注册 2007-4-28
状态 离线
『第 11 楼』:  

有不有同样功能的bat呀

wmic是怎么,谁举个例子吧

2007-5-1 18:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 12 楼』:  

To abczxc
帖子的问题直接回原贴就可以了,UCase函数与组合次数无关。
Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell")
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if UCase(ps.executablepath)=UCase("C:\WINDOWS\svchost.exe") then
WshSHell.Run ("ntsd -c q -p "&ps.handle),vbHide
end if
next
Set WshSHell = Nothing
WScript.Quit(0)


   此帖被 +2 点积分    点击查看详情   
评分人:【 abczxc 分数: +2  时间:2007-5-3 12:06




好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-5-2 21:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 13 楼』:  

这个例子是带删除文件的 搜索路径查杀进程



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-5-2 21:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: