
[已解決]檢索系統無用進程的批處理為何出錯我是初學者,對于批處理還不熟,會的就幫我分析一下吧。下面是我寫的代碼,望指教。
nclick="copycode($('code0'));">復制代碼
- @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

