标题: [系统相关] 批处理怎样查找并结束随机变量长文件名进程? [打印本页]
作者: dqwglm 时间: 2010-4-15 17:03 标题: 批处理怎样查找并结束随机变量长文件名进程?
最近网吧换了恒信一卡通以后开机在进程里会有一个随机的长文件名,有的不知道的就以为是机器中了病毒就在那乱叫,解释又不通,死活就说有病毒。。。于是在网上搜索了一些批处理找到了一个结束多余进程的批处理,还算挺好用的,能把一卡通那些多余的进程 结束掉,但唯一的就是那个很长的开机随机变名的那个进程结束不掉,只能查找到。。所以希望大家可否帮助一下,给小弟一份代码,在这里先谢过了。。
那2个长文件的名子,其中有一个是在任务管理器里能看到的,另一个则是看不到的,应该是隐藏了。。-
-
- @echo off
- cd /d C:\
- echo wmiprvse.exe >kill.txt
- echo smss.exe >>kill.txt
- echo csrss.exe >>kill.txt
- echo services.exe >>kill.txt
- echo lsass.exe >>kill.txt
- echo winlogon.exe >>kill.txt
- echo svchost.exe >>kill.txt
- echo explorer.exe >>kill.txt
- echo sidebar.exe >>kill.txt
- echo RocketDock.exe >>kill.txt
- echo QQ.exe >>kill.txt
- echo TXPlatform.exe >>kill.txt
- echo svchost.exe >>kill.txt
- echo ctfmon.exe >>kill.txt
-
- :::::::::浏览器echo iexplore.exe >>kill.txt
-
- echo cmd.exe >>kill.txt
- echo tasklist.exe >>kill.txt
- echo QQ.exe >>kill.txt
- echo qq.exe >>kill.txt
- echo play.exe >>kill.txt
-
- ::::::::要长期保留的进程请加在这行上面,如echo xxoo.exe >>kill.txt这样的形式
-
- echo %1 >>kill.txt
- echo %2 >>kill.txt
- echo %3 >>kill.txt
- echo %4 >>kill.txt
- echo %5 >>kill.txt
- echo %6 >>kill.txt
- echo %7 >>kill.txt
- echo %8 >>kill.txt
- echo %9 >>kill.txt
-
- echo 程序工作中........................
- echo :::bat by 江南一根葱 :::
- echo 正在杀死进程,请稍候…………
-
- for /f "skip=5" %%i in ('tasklist') do call :kill %%i
- pause >nul
-
- :kill
- find "%1" C:\kill.txt >nul
- if not "%errorlevel%"=="0" taskkill /f /im %~n1.exe
复制代码
作者: GNU 时间: 2010-4-15 17:25
你是怎样结束进程的?
作者: hanyeguxing 时间: 2010-4-15 17:29
那个进程是做什么的?
作者: dqwglm 时间: 2010-4-15 17:29
怎样结束进程?什么意思?
作者: dqwglm 时间: 2010-4-15 17:30
具体的也没有去查过,猜测是自动跳转百度的,因为一直都有人反应,网页自动跳转百度,而多余的进程了只有那么一个了。。。
作者: hanyeguxing 时间: 2010-4-15 17:33
如果此进程非关键进程
你可以使用Taskkill来结束他,如果不成功,返回信息是什么?
然后,使用Ntsd看能否结束他。
作者: dqwglm 时间: 2010-4-15 17:40
原帖由 hanyeguxing 于 2010-4-15 17:33 发表
如果此进程非关键进程
你可以使用Taskkill来结束他,如果不成功,返回信息是什么?
然后,使用Ntsd看能否结束他。
我上面已经写的很清楚了,随机的,他每开机一次就会变一次,12位的文件名,如果是固定的文件名我也不用在这里问大家了我要直接用命令去结束随便一个就能结束,关键他不是随机的名子吗?不是固定的名子。
作者: GNU 时间: 2010-4-15 17:52 标题: 回复 4楼 的帖子
意思是希望你把“于是在网上搜索了一些批处理找到了一个结束多余进程的批处理”贴出来看看
作者: GNU 时间: 2010-4-15 17:55 标题: 回复 7楼 的帖子
这些背景,你不说,谁知道?你顶楼只说一句“但唯一的就是那个很长的开机随机变名的那个进程结束不掉”,进程结束不掉的原因多了去了,谁知道你是因为哪个?
作者: dqwglm 时间: 2010-4-15 18:21
在C盘下会生成2个日志文件,其实一个是白名单就不用看了。。
tasklist.txt这个里面的日志如下。。
Name ProcessId
System Idle Process 0
System 4
smss.exe 696
csrss.exe 740
winlogon.exe 764
services.exe 812
lsass.exe 824
svchost.exe 988
svchost.exe 1040
svchost.exe 1312
svchost.exe 1356
RunMe.exe 1488
explorer.exe 1640
Msg.exe 1768
PXDClient.exe 1780
svchost.exe 1800
internat.exe 1840
k8xHrmPPpD4oLlrtVg021CEMufk0iSbQ.exe 1936
services.exe 168
svchost.exe 1508
smss.exe 1408
wmiprvse.exe 1484
notepad.exe 180
cmd.exe 1200
wmic.exe 1808
在这日志里还可以看到这个k8xHrmPPpD4oLlrtVg021CEMufk0iSbQ.exe 1936
说明那个批处理是可以搜索到这个进程,也能查到这个名子。。但在批处理执行到最后确提示错误找不到进程 。。
作者: hanyeguxing 时间: 2010-4-15 18:43
前提:要结束的进程名中无空格
先用这个看看:20是指进程名最大数,包含.exe这四个字符- @echo off&setlocal enabledelayedexpansion
- for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
- if !n! gtr 20 taskkill /f /pid %%j)
- exit
- :hanye
- set "i=%~1"&set n=0
- :guxing
- if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
不行再试试这个:20是指进程名最大数,包含.exe这四个字符- @echo off&setlocal enabledelayedexpansion
- for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
- if !n! gtr 20 ntsd -c q -p %%j)
- exit
- :hanye
- set "i=%~1"&set n=0
- :guxing
- if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
[ 本帖最后由 hanyeguxing 于 2010-4-15 18:46 编辑 ]
作者: dqwglm 时间: 2010-4-15 19:16
'%a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
2个执行以后都提示了这个。。。
作者: hanyeguxing 时间: 2010-4-15 19:20
原帖由 dqwglm 于 2010-4-15 19:16 发表
'%a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
2个执行以后都提示了这个。。。
我的两个批处理里没有%a,所以不可能有这个提示。
把你运行的代码贴出来
作者: dqwglm 时间: 2010-4-15 19:25
直接运行以后,CMD就退出了,但看进程还在,所以我就在批处理结尾加了一句。。
pause >nul
不然直接运行了以后,出了什么提示都看不到的。。我加上这句以后提示的就是那个。。
作者: dqwglm 时间: 2010-4-15 19:29
我又看了一下,好像是称加BAT,OEM信息有关系。。。才出的那个提示。。
不是你的语句出错。。但,结果就是,结束不掉那个进程 。。
作者: hanyeguxing 时间: 2010-4-15 19:29
想要暂停,这样写:- @echo off&setlocal enabledelayedexpansion
- for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
- if !n! gtr 20 taskkill /f /pid %%j)
- pause&exit
- :hanye
- set "i=%~1"&set n=0
- :guxing
- if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
- @echo off&setlocal enabledelayedexpansion
- for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
- if !n! gtr 20 ntsd -c q -p %%j)
- pause&exit
- :hanye
- set "i=%~1"&set n=0
- :guxing
- if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
你再测试下
[ 本帖最后由 hanyeguxing 于 2010-4-15 19:30 编辑 ]
作者: dqwglm 时间: 2010-4-15 19:32
这回好使了,加了那句暂停,进程也结束了。那为什么之前的没加暂时确不结束?
还有就是,不知道你有没有时间和耐心,可以把你写的语句代码,逐句的做个注释解释。。
我不想光拿来就用了。。我想明白其中的含意。。
作者: dqwglm 时间: 2010-4-15 19:39
- @echo off&setlocal enabledelayedexpansion
- for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
- if !n! gtr 20 taskkill /f /pid %%j)
- pause&exit
- :hanye
- set "i=%~1"&set n=0
- :guxing
- if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
错误: 无效语法。'/pid' 需要一个值。
有关用法,请键入 "TASKKILL /?"。
错误: 无效语法。'/pid' 需要一个值。
有关用法,请键入 "TASKKILL /?"。
错误: 无效语法。'/pid' 需要一个值。
有关用法,请键入 "TASKKILL /?"。
成功: 已终止 PID 为 1900 的进程。
作者: lxzzr 时间: 2010-4-15 19:39
进程名是否一定含“_”??
作者: dqwglm 时间: 2010-4-15 19:42
原帖由 lxzzr 于 2010-4-15 19:39 发表
进程名是否一定含“_”??
有的时候是会有“_”我注意过。。
作者: lxzzr 时间: 2010-4-15 20:10 标题: 回复 20楼 的帖子
如果一定有“_”,试下这个:
wmic process where "name like '%[_]%'" call Terminate
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |