Windows 批量终止进程实现加速

237次阅读
没有评论

共计 2136 个字符,预计需要花费 6 分钟才能阅读完成。

背景

手头的一些 Windows 机器,在长时间开启后由于运行了大量进程,导致响应缓慢。

由于进程太多,一个个清理太费时间,以往都是重启了事。但是重启后尽管部分应用配置了开机自启,但是仍有应用需要手动进行配置,也费事。

在逛论坛时,发现了一个脚本,可以用于解决我的问题。这里感谢 愚无尽 的无私奉献。

52破解 一键结束非白名单进程v1.0让系统满血复活 by愚无尽

脚本修改

在实际使用中,发现几点问题:

  1. 白名单列表的进程,若存在多个相同进程名,只会保留第一个匹配到的进程,剩余的仍会被kill。例如 Clash for Windows.exe​ 会同时启动5个同名进程,执行原脚本后会kill 4个,留存1个
  2. 在执行 kill 前,无法预测会kill 哪些进程。

于是进行脚本修改:

  1. 先初始化被 kill 的进程列表,遍历当前启动进程和白名单进程,将被 kill 的进程存入列表。原始逻辑是一边遍历一边kill。
  2. 输出列表供用户进行二次确认
  3. 执行 kill
@echo off
title 一键结束非白名单进程v1.1
setlocal enableextensions enabledelayedexpansion

echo        __ __ _ ____   ____                            
echo       / //_/(_) / /  / __ \_________  ________  __________
echo      / ,^<  / / / /  / /_/ / ___/ __ \/ ___/ _ \/ ___/ ___/
echo     / /^| ^|/ / / /  / ____/ /  / /_/ / /__/  __(__  ^|__  )
echo    /_/ ^|_/_/_/_/  /_/   /_/   \____/\___/\___/____/____/  
echo.
echo                   ╭───────────────╮
echo   ╭───────┤一 键 结 束 非  白 名 单 进 程├───────╮
echo   │              ╰───────────────╯              │
echo   │    ※  一键结束非白名单进程释放系统性能                      │
echo   │                                                              │
echo   │    ※  一键结束病毒木马进程还我系统主权                      │
echo   │                                                              │
echo   │    ※  已内置系统白名单,可在whitelist后添加自己白名单       │
echo   │                                                              │
echo   │    ※  操作本工具存在风险可能,执行表示已知悉存在的风险      │
echo   │                                                              │
echo   │                                                              │
echo   ╰───────────────────────────────╯
echo     请保存好相关工作,清楚风险按任意键继续,否则请直接关闭!!!
echo    ────────────────────────────────
echo.
echo    ^>^>^> 按任意键继续. . .
echo.
pause>nul 2>&1

:: 设置白名单变量
:: set "whitelist=audiodg.exe;ApplicationFrameHost.exe;csrss.exe;ctfmon.exe;ChsIME.exe;cmd.exe;conhost.exe;dwm.exe;dllhost.exe;explorer.exe;fontdrvhost.exe;lsass.exe;lsm.exe;RuntimeBroker.exe;smss.exe;services.exe;svchost.exe;system;sihost.exe;spoolsv.exe;ShellExperienceHost.exe;userinit.exe;wininit.exe;winlogon.exe;WMIADAP.exe;WmiPrvSE.exe;WUDFHost.exe"


echo 检索将被终止的进程列表...
:: 初始化进程列表
set "processList="

:: 收集所有进程名称
for /f "tokens=1* delims=," %%a in ('tasklist /nh /fo csv ^| findstr /v /c:"System Idle Process"') do (
    set "proc=%%a"
    set "proc=!proc:"=!"  :: 去除引号
    set "processList=!processList!!proc!;"
)

:: 检查进程是否在白名单中并移除
for %%w in (!whitelist!) do (
    set "processList=!processList:%%w=!"
)

:: 输出剩余的进程信息
echo =========================
echo 非白名单进程列表(进程名)
echo =========================
for %%x in (!processList!) do (
    if not "%%x"=="" echo %%x
)
echo.
echo 等待 2 秒进行确认...
timeout /t 2 > nul
echo 等待完成

:: 等待用户确认
echo.
echo 按任意键继续终止上述进程...
pause>nul 2>&1

:: 终止剩余的进程
for %%x in (!processList!) do (
    if not "%%x"=="" (
        for /f "tokens=2 delims=," %%p in ('tasklist /fi "IMAGENAME eq %%x" /fo csv /nh') do (
            taskkill /f /pid %%p >nul 2>&1
            echo 已终止 %%x
        )
    )
)

echo.
echo 所有非白名单进程已被终止,按任意键退出...
pause>nul 2>&1
endlocal

效果如下:
Windows 批量终止进程实现加速

Windows 批量终止进程实现加速

本文属于专题:Windows

引用链接

正文完
 
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2024-04-30发表,共计2136字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(没有评论)