我是初学者,对于批处理还不熟,会的就帮我分析一下吧。
下面是我写的代码,望指教。- @echo off
- setlocal enabledelayedexpansion
- cls
- ::设置关键进程列表
- 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
-
- ::提取列表进程名并输出WhiteList.ini
- for %%q in (%systemstr%) do echo %%q>>WhiteList.ini
-
- ::获取当前运行的所有进程并输出为task.ini
- for /f "skip=3 tokens=1 delims= " %%d in ('tasklist') do echo %%d>>task.ini
-
- ::查找当前运行的进程中属于关键进程并输出systemlist.ini
- for /f "skip=3 tokens=1 delims= " %%a in ('tasklist') do (findstr /i "%%a" WhiteList.ini)>>systemlist.ini
-
- ::设置当前关键进程为变量replaced
- for /f "tokens=1 delims= " %%b in (systemlist.ini) do (set replaced=%%b)
-
- ::[color=Red]查找task.ini中的关键进程,如存在则替换为;只保留非关键进程名(此处出错,replaced只获得最后一个数据)[/color]
- for /f "tokens=1" %%i in ('type "task.ini"') do (
- set str=%%i
- set "str=!str:%replaced%=;!"
- echo !str!>>mp.txt
- )
-
- ::清除临时配置文件
- del /f /q "systemlist.ini"
- del /f /q "task.ini"
- move mp.txt task.ini>nul
- start task.ini
- pause
复制代码
|