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

[系统相关] 如何完善查看多余进程(信任名单之外的进程)的批处理?

这是我自己写的一段代码,还有一点小小的不足之处,大家帮我改改,它的作用是检查当前系统中有哪些进程是多余的的,而且可以选择批量结束它们。那个强制结束的功能我还没有写进去,本来打算用ntsd -c q -p PID 的,现在有一问题不能很好的解决,就是如果进程名称:
1,有空格  
2,有多个“.”
3,根本没有“.”(如system)。

这几个问题导致我的程序只能结束它们,不能显示它们的完整路径。



@echo off&color 1f&title (多余进程查看)   ⊕⊕⊕落叶随风12制作⊕⊕⊕
SETLOCAL ENABLEDELAYEDEXPANSION
:back
cls
>多余进程列表.txt cd.
echo =================以下路径的进程不属于规定名单列表===================
for /f  "skip=3 tokens=1" %%i in ('tasklist ^|more') do (
set char1=%%i
find /i "!char1!" "%~0" >nul 2>nul
if ERRORLEVEL 1 (
wmic process where name="!char1!" get executablepath |find /i "\" ||echo         "!char1!xxx" 这个进程名有空格。
>>多余进程列表.txt echo !char1!
)
)
echo.&echo ==========================================================
echo [1]   结束这些多余的进程
echo [2]   强制结束这些多余的进程
echo   按其它键进行刷新操作
set choose11=5
set /p choose11="请输入选择:"                              &&rem 还有这里怎么解决输入空格程序会退出的问题,用if "%choose%" equ " " 好像不行
if %choose11% equ 1 goto mark1
if %choose11% equ 2 goto mark2
goto back
:mark1
for /f "tokens=*" %%i in ('type 多余进程列表.txt ^|more') do (
echo 结束进程 %%i &&taskkill /im "%%~i*" /f ||echo 结束进程 %%i 失败
)
echo.&echo ==========================================================
echo 任意键返回 &pause >nul &&goto back
:mark2

echo 任意键返回 &pause >nul &&goto back
rem 下面为信任的进程名单
System
smss.exe
csrss.exe
winlogon.exe
services.exe
lsass.exe
svchost.exe
。。。。。。。。

解决你空格退出的问题
if "%choose11%" equ "1"
***共同提高***

TOP

跟个我本机上用的吧:
  1. @echo off&color 1f&mode con cols=50 lines=5
  2. title 非法进程结束器(对杀软无效)
  3. echo.&echo.
  4. set "back=smss csrss winlogon services lsass svchost spoolsv alg nvsvc32 wdfmgr explorer ctfmon wmiprvse qq cmd iexplore lenovo_ce200_detect syntpenh"
  5. taskkill /f /im explorer.exe>nul 2>nul
  6. for %%a in (%back%) do set "_%%a.exe=a"
  7. for /f %%a in ('tasklist^|findstr /i ".exe"') do if not defined _%%a taskkill /f /im %%a>nul 2>nul
  8. for %%a in (%back%) do set "_%%a.exe="
  9. start explorer.exe>nul 2>nul
  10. echo           所有非法进程已经结束。
  11. ping /n 3 127.1>nul
复制代码
***共同提高***

TOP

1,有空格
2,有多个“.”
3,根本没有“.”(如system)。

在使用tasklist获取进程名时,可以使用参数/fo csv
  1. for /f "skip=1 delims=," %%i in ('tasklist /fo csv') do ()
复制代码

TOP

返回列表