[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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
复制代码

回复 20楼 的帖子

如果一定有“_”,试下这个:
wmic process where "name like '%[_]%'" call Terminate

TOP

原帖由 lxzzr 于 2010-4-15 19:39 发表
进程名是否一定含“_”??


有的时候是会有“_”我注意过。。

TOP

进程名是否一定含“_”??

TOP

  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. pause&exit
  5. :hanye
  6. set "i=%~1"&set n=0
  7. :guxing
  8. if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码
错误: 无效语法。'/pid' 需要一个值。
有关用法,请键入 "TASKKILL /?"。
错误: 无效语法。'/pid' 需要一个值。
有关用法,请键入 "TASKKILL /?"。
错误: 无效语法。'/pid' 需要一个值。
有关用法,请键入 "TASKKILL /?"。
成功: 已终止 PID 为 1900 的进程。

TOP

这回好使了,加了那句暂停,进程也结束了。那为什么之前的没加暂时确不结束?

还有就是,不知道你有没有时间和耐心,可以把你写的语句代码,逐句的做个注释解释。。

我不想光拿来就用了。。我想明白其中的含意。。

TOP

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

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

TOP

想要暂停,这样写:
  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. pause&exit
  5. :hanye
  6. set "i=%~1"&set n=0
  7. :guxing
  8. if not "!i:~%n%,1!"=="" set/a n+=1&goto:guxing
复制代码

  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. pause&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 19:30 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

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

pause >nul

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

TOP

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

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

TOP

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

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

在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

回复 7楼 的帖子

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

TOP

回复 4楼 的帖子

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

TOP

返回列表