[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理怎样查找并结束随机变量长文件名进程?

最近网吧换了恒信一卡通以后开机在进程里会有一个随机的长文件名,有的不知道的就以为是机器中了病毒就在那乱叫,解释又不通,死活就说有病毒。。。于是在网上搜索了一些批处理找到了一个结束多余进程的批处理,还算挺好用的,能把一卡通那些多余的进程 结束掉,但唯一的就是那个很长的开机随机变名的那个进程结束不掉,只能查找到。。所以希望大家可否帮助一下,给小弟一份代码,在这里先谢过了。。

那2个长文件的名子,其中有一个是在任务管理器里能看到的,另一个则是看不到的,应该是隐藏了。。
  1. @echo off
  2. cd /d C:\
  3. echo wmiprvse.exe >kill.txt
  4. echo smss.exe >>kill.txt
  5. echo csrss.exe >>kill.txt
  6. echo services.exe >>kill.txt
  7. echo lsass.exe >>kill.txt
  8. echo winlogon.exe >>kill.txt
  9. echo svchost.exe >>kill.txt
  10. echo explorer.exe >>kill.txt
  11. echo sidebar.exe >>kill.txt
  12. echo RocketDock.exe >>kill.txt
  13. echo QQ.exe >>kill.txt
  14. echo TXPlatform.exe >>kill.txt
  15. echo svchost.exe >>kill.txt
  16. echo ctfmon.exe >>kill.txt
  17. :::::::::浏览器echo iexplore.exe >>kill.txt
  18. echo cmd.exe >>kill.txt
  19. echo tasklist.exe >>kill.txt
  20. echo QQ.exe >>kill.txt
  21. echo qq.exe >>kill.txt
  22. echo play.exe >>kill.txt
  23. ::::::::要长期保留的进程请加在这行上面,如echo xxoo.exe >>kill.txt这样的形式
  24. echo %1 >>kill.txt
  25. echo %2 >>kill.txt
  26. echo %3 >>kill.txt
  27. echo %4 >>kill.txt
  28. echo %5 >>kill.txt
  29. echo %6 >>kill.txt
  30. echo %7 >>kill.txt
  31. echo %8 >>kill.txt
  32. echo %9 >>kill.txt
  33. echo 程序工作中........................
  34. echo :::bat by 江南一根葱 :::
  35. echo 正在杀死进程,请稍候…………
  36. for /f "skip=5" %%i in ('tasklist') do call :kill %%i
  37. pause >nul
  38. :kill
  39. find "%1" C:\kill.txt >nul
  40. if not "%errorlevel%"=="0" taskkill /f /im %~n1.exe
复制代码

你是怎样结束进程的?

TOP

那个进程是做什么的?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

怎样结束进程?什么意思?

TOP

具体的也没有去查过,猜测是自动跳转百度的,因为一直都有人反应,网页自动跳转百度,而多余的进程了只有那么一个了。。。

TOP

如果此进程非关键进程
你可以使用Taskkill来结束他,如果不成功,返回信息是什么?
然后,使用Ntsd看能否结束他。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2010-4-15 17:33 发表
如果此进程非关键进程
你可以使用Taskkill来结束他,如果不成功,返回信息是什么?
然后,使用Ntsd看能否结束他。


我上面已经写的很清楚了,随机的,他每开机一次就会变一次,12位的文件名,如果是固定的文件名我也不用在这里问大家了我要直接用命令去结束随便一个就能结束,关键他不是随机的名子吗?不是固定的名子。

TOP

回复 4楼 的帖子

意思是希望你把“于是在网上搜索了一些批处理找到了一个结束多余进程的批处理”贴出来看看

TOP

回复 7楼 的帖子

这些背景,你不说,谁知道?你顶楼只说一句“但唯一的就是那个很长的开机随机变名的那个进程结束不掉”,进程结束不掉的原因多了去了,谁知道你是因为哪个?

TOP

在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     
说明那个批处理是可以搜索到这个进程,也能查到这个名子。。但在批处理执行到最后确提示错误找不到进程 。。

TOP

前提:要结束的进程名中无空格

先用这个看看:20是指进程名最大数,包含.exe这四个字符
  1. @echo off&setlocal enabledelayedexpansion
  2. for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
  3. if !n! gtr 20 taskkill /f /pid %%j)
  4. exit
  5. :hanye
  6. set "i=%~1"&set n=0
  7. :guxing
  8. if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
不行再试试这个:20是指进程名最大数,包含.exe这四个字符
  1. @echo off&setlocal enabledelayedexpansion
  2. for /F "tokens=1,2" %%i in ('Tasklist /nh') do (call:hanye "%%i"
  3. if !n! gtr 20 ntsd -c q -p %%j)
  4. exit
  5. :hanye
  6. set "i=%~1"&set n=0
  7. :guxing
  8. if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码

[ 本帖最后由 hanyeguxing 于 2010-4-15 18:46 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

'%a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
2个执行以后都提示了这个。。。

TOP

原帖由 dqwglm 于 2010-4-15 19:16 发表
'%a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
2个执行以后都提示了这个。。。

我的两个批处理里没有%a,所以不可能有这个提示。
把你运行的代码贴出来
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

直接运行以后,CMD就退出了,但看进程还在,所以我就在批处理结尾加了一句。。

pause >nul

不然直接运行了以后,出了什么提示都看不到的。。我加上这句以后提示的就是那个。。

TOP

我又看了一下,好像是称加BAT,OEM信息有关系。。。才出的那个提示。。

不是你的语句出错。。但,结果就是,结束不掉那个进程 。。

TOP

返回列表