中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 12:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理只结束相同进程中的一个 查看 1,207 回复 12
楼 主 批处理只结束相同进程中的一个 发表于 2007-04-30 10:39 ·  中国 湖北 武汉 武昌区 电信
初级用户
★★
积分 135
发帖 53
注册 2007-04-28 23:05
19年会员
UID 86817
性别 男
状态 离线
@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 ]
2 发表于 2007-04-30 10:52 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
直接根据路径杀掉不就可以了吗?
搜索 wmic 。
3 发表于 2007-04-30 10:56 ·  中国 湖北 武汉 电信
初级用户
积分 68
发帖 31
注册 2007-03-23 12:33
19年会员
UID 82670
性别 男
状态 离线
根据PID进程号查杀应该好点吧 也简单点
4 发表于 2007-04-30 11:07 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
Originally posted by bingxiao20 at 2007-4-30 10:56 AM:
根据PID进程号查杀应该好点吧 也简单点

应该做不到:如何去判断 坏程序的PID号?
还是斑竹的办法好点,用WMIC取得该程序的路径,如何不符合设定,就干掉它
5 发表于 2007-04-30 11:11 ·  中国 河北 保定 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线

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)
6 发表于 2007-04-30 11:53 ·  中国 湖北 武汉 电信
初级用户
积分 68
发帖 31
注册 2007-03-23 12:33
19年会员
UID 82670
性别 男
状态 离线
Originally posted by baomaboy at 2007-4-29 10:11 PM:

Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell")
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if ps.executablepath=&q ...



这个倒是可以用来杀掉那些病毒李鬼进程了。。。
7 发表于 2007-04-30 12:52 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
Originally posted by baomaboy at 2007-4-30 11:11 AM:

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直接来的,现在想来头都大。
8 发表于 2007-04-30 13:24 ·  中国 河北 保定 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线
Originally posted by youxi01 at 2007-4-30 12:52:


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

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


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

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

①由于新建VBS模版的原因,代码中会有多于的代码 (无用代码),更由于我懒而没删除,大家凑合看吧。
②基础差,没好的编码习惯,想到那写到哪,所以可能有捷径的代码我用了很曲折的方法,还是由于懒没有改写。
我的目的就是,可以学习到方法和技巧,并可以使用,至于美化格式,精简代码,等我有时间和精力时也许会那么做 。所以 希望大家不要扔鸡蛋啊 ,最初加密就是怕大家砸我 ^_^。
9 发表于 2007-04-30 21:25 ·  中国 湖北 武汉 武昌区 电信
初级用户
★★
积分 135
发帖 53
注册 2007-04-28 23:05
19年会员
UID 86817
性别 男
状态 离线
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 这个程序就结束不了,这是怎么回事?
10 发表于 2007-04-30 21:37 ·  中国 湖北 武汉 武昌区 电信
初级用户
★★
积分 135
发帖 53
注册 2007-04-28 23:05
19年会员
UID 86817
性别 男
状态 离线
还是搞清楚了,baomaboy写的这个脚本真好。谢谢啊
原来是路径搞错了,用mt -pslist看了一下好了
11 发表于 2007-05-01 18:10 ·  中国 湖北 武汉 武昌区 电信
初级用户
★★
积分 135
发帖 53
注册 2007-04-28 23:05
19年会员
UID 86817
性别 男
状态 离线
有不有同样功能的bat呀

wmic是怎么,谁举个例子吧
12 发表于 2007-05-02 21:14 ·  中国 河北 保定 高碑店市 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线
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)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
abczxc +2 2007-05-03 12:06
13 发表于 2007-05-02 21:21 ·  中国 河北 保定 高碑店市 联通
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线
论坛跳转: