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

[系统相关] [已解决]检索系统无用进程的批处理为何出错?

我是初学者,对于批处理还不熟,会的就帮我分析一下吧。
下面是我写的代码,望指教。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cls
  4. ::设置关键进程列表
  5. set systemstr=[系统关键进程] System.exe smss.exe sched.exe csrss.exe avguard.exe avshadow.exe avgnt.exe spoolsv.exe Userinit.exe cmd.exe taskkill.exe wininit.exe services.exe winlogon.exe lsass.exe lsm.exe svchost.exe dwm.exe conhost.exe SearchProtocolHost.exe taskhost.exe TPAutoConnect.exe TPAutoConnSvc.exe spoolsv.exe vmacthlp.exe wmiprvse.exe SearchFilterHost.exe alg.exe razerhid.exe razerofa.exe LogonUI.exe mDNSResponder.exe vmusrvc.exe vmsrvc.exe vpcmap.exe conime.exe wlms.exe LMS.exe savedump.exe audiodg.exe NvXDSync.exe nvvsvc.exe WUDFHost.exe dllhost.exe spoolsv.exe conhost.exe tasklist.exe
  6. ::提取列表进程名并输出WhiteList.ini
  7. for %%q in (%systemstr%) do echo %%q>>WhiteList.ini
  8. ::获取当前运行的所有进程并输出为task.ini
  9. for /f "skip=3 tokens=1 delims= " %%d in ('tasklist') do echo %%d>>task.ini
  10. ::查找当前运行的进程中属于关键进程并输出systemlist.ini
  11. for /f "skip=3 tokens=1 delims= " %%a in ('tasklist') do (findstr /i "%%a" WhiteList.ini)>>systemlist.ini
  12. ::设置当前关键进程为变量replaced
  13. for /f "tokens=1 delims= " %%b in (systemlist.ini) do (set replaced=%%b)
  14. ::[color=Red]查找task.ini中的关键进程,如存在则替换为;只保留非关键进程名(此处出错,replaced只获得最后一个数据)[/color]
  15. for /f "tokens=1" %%i in ('type "task.ini"') do (
  16.     set str=%%i
  17.     set "str=!str:%replaced%=;!"
  18.     echo !str!>>mp.txt
  19. )
  20. ::清除临时配置文件
  21. del /f /q "systemlist.ini"
  22. del /f /q "task.ini"
  23. move mp.txt task.ini>nul
  24. start task.ini
  25. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

潜力贴留名

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cls
  4. ::设置关键进程列表
  5. set systemstr=[系统关键进程] System.exe smss.exe sched.exe csrss.exe avguard.exe avshadow.exe avgnt.exe spoolsv.exe Userinit.exe cmd.exe taskkill.exe wininit.exe services.exe winlogon.exe lsass.exe lsm.exe svchost.exe dwm.exe conhost.exe SearchProtocolHost.exe taskhost.exe TPAutoConnect.exe TPAutoConnSvc.exe spoolsv.exe vmacthlp.exe wmiprvse.exe SearchFilterHost.exe alg.exe razerhid.exe razerofa.exe LogonUI.exe mDNSResponder.exe vmusrvc.exe vmsrvc.exe vpcmap.exe conime.exe wlms.exe LMS.exe savedump.exe audiodg.exe NvXDSync.exe nvvsvc.exe WUDFHost.exe dllhost.exe spoolsv.exe conhost.exe tasklist.exe
  6. ::提取列表进程名并输出WhiteList.ini
  7. for %%q in (%systemstr%) do echo %%q>>WhiteList.ini
  8. ::获取当前运行的所有进程并输出为task.ini
  9. for /f "skip=3 tokens=1 delims= " %%d in ('tasklist') do echo %%d>>task.ini
  10. ::查找当前运行的进程中属于关键进程并输出systemlist.ini
  11. for /f "skip=3 tokens=1 delims= " %%a in ('tasklist') do (findstr /i "%%a" WhiteList.ini)>>systemlist.ini
  12. for /f "tokens=1 delims= " %%b in (systemlist.ini) do (
  13.     for /f "tokens=1" %%i in ('type "task.ini"') do (
  14.         set str=%%i
  15.         set "str=!str:%%b=;!"
  16.         echo !str!>>mp.txt
  17.     )
  18. )
  19. ::清除临时配置文件
  20. del /f /q "systemlist.ini"
  21. del /f /q "task.ini"
  22. move mp.txt task.ini>nul
  23. start task.ini
  24. pause
复制代码
1

评分人数

TOP

回复 3# BAT-VBS

这样的写法不对,造成重复输出了,而且也没办法清除相同内容

TOP

回复 4# 白夜


    我只是把顶楼代码的逻辑错误修改了一下,如果功能上不符合需求,你可以再斟酌一下先,实在搞不定再问。

TOP

返回列表