当前位置:DOS资源站资料中心批处理教程 → 批处理程序之进程与DLL模块相互查询及管理

批处理程序之进程与DLL模块相互查询及管理

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2008-4-30 0:16:50

点击下载此文件

没做界面美化,实用为主.
因为网页不能处理Tab(跳格键),都会自动用空格代替,请下载附件使用.


@echo off&title DOS资源站 www.cmdos.net&setlocal enabledelayedexpansion

:menu
cls&echo\&echo\
echo.    1.显示进程及所被调用的模块(简洁)
echo\
echo.    2.通过进程查找并列出所调用的模块(包括模块详细信息)
echo\
echo.    3.通过模块找到所调用它的进程
echo\
echo.    4.结束进程
:afresh
echo\
set/p choice=    请输入选项:
set error=    错误的选择,请重新输入.
if %choice% leq 0 (echo.%error%&goto afresh) else (if %choice% gtr 4 (echo.%error%&goto afresh))
goto choice%choice%
pause&exit
:choice1
cls
tasklist /m /fo "csv" /nh
echo.所有进程及所被调用的模块显示完毕.按任意键返回.
pause>nul&goto menu
:choice2
del particular.txt >nul 2>nul
echo\
set /p name=    请输入进程名(如Q.exe):
for /f %%i in ('TASKLIST /fi "IMAGENAME eq %name%" /fo "csv" /nh /m') do (
set namedll=%%~i
set namedll=!namedll:"=!
echo !namedll!
)
echo\
set /p yes=进程"%name%"调用的所有模块列举完毕,是否列出模块详细信息(Y/N):
set /p all=A-仅路径(默认完整信息):
mode con cols=150 lines=80
if /i "%yes%"=="y" (
start msinfo32 /categories +swenvloadedmodules /report particular.txt
echo.请稍候...
:particular
if not exist particular.txt (
   ping -n 1 127.1>nul
   goto particular
  ) else (
    cls
    if /i "%all%"=="A" (echo.名称---路径) else (echo.名称---版本---大小---文件日期---制造商---路径)
    for %%i in (%namedll%) do (
    if /i "%all%"=="A" (
     for /f "delims=  tokens=1,6" %%j in ('type particular.txt ^| find /i "%%i"') do (
     echo %%j---%%k
    )
    ) else (
    for /f "delims=" %%j in ('type particular.txt ^| find /i "%%i"') do (
    set particular=%%j
    set particular=!particular: =-!
    echo !particular!
   )
   )
   )
   echo.进程"%name%"调用的所有模块详细信息列举完毕,按任意键返回.
   pause>nul&goto menu
)
)
goto menu
:choice3
echo\&set /p b=输入DLL名:
for /f "tokens=*" %%i in ('TASKLIST /m /fo "csv" /nh') do (
echo %%i | find /i "%b%"
if not %ERRORLEVEL% equ 0 echo\&echo %%i)
echo\&echo.显示完毕.按任意键返回.
pause>nul&goto menu
:choice4
Tasklist
echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━以上是进程列表.
Set /p IM=输入所要结束进程的名称(如:id.exe):
taskkill /f /t /im %IM%
ECHO 命令完成!按任意键返回.
pause>nul&goto menu