返回列表 发帖

[系统增强] 进程与DLL模块相互查询及管理批处理版

没做界面美化,实用为主.
因为网页不能处理Tab(跳格键),都会自动用空格代替,请下载附件使用.
@echo off&setlocal enabledelayedexpansion
::code by foxjl@bbs.bathome.net 2008/01/07
: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 menuCOPY
链接: https://pan.baidu.com/s/1j7P6l5TBTqgsuLtxeFCF4Q?pwd=7jyf
2

评分人数

仅得dll完全路径的代码已在顶楼更新,不过又多了一个选项.
因为网页不能处理tab,都用了空格代替
下面代码红色部分应该是TAB:
for /f "delims=tab  tokens=1,6" %%j in ('type particular.txt ^| find /i "%%i"') do (
     echo %%j---%%k
    )
---------------------------
set particular=!particular:tab=-!

[ 本帖最后由 foxJL 于 2008-1-8 01:25 编辑 ]

TOP

cmd是可以用TAB的,可能是你代码编辑器的问题,我用的是:Notepad2.
下面是我测试查看DLL完全路径的结果,看起来似乎不是很累.
jscript---c:\windows\system32\jscript.dll
vbscript---c:\windows\system32\vbscript.dll
mfc42---c:\windows\system32\mfc42.dll
mfc42loc---c:\windows\system32\mfc42loc.dll
MSIMTF---c:\windows\system32\msimtf.dll
msohev---c:\program files\microsoft office\office11\msohev.dll
mpr---c:\windows\system32\mpr.dll
drprov---c:\windows\system32\drprov.dll
ntlanman---c:\windows\system32\ntlanman.dll
netui0---c:\windows\system32\netui0.dll
netui1---c:\windows\system32\netui1.dll
netrap---c:\windows\system32\netrap.dll
samlib---c:\windows\system32\samlib.dll
davclnt---c:\windows\system32\davclnt.dll
shgina---c:\windows\system32\shgina.dll
msgina---c:\windows\system32\msgina.dll
winsta---c:\windows\system32\winsta.dll
odbc32---c:\windows\system32\odbc32.dll
comdlg32---c:\windows\system32\comdlg32.dll
odbcint---c:\windows\system32\odbcint.dll
Audiodev---c:\windows\system32\audiodev.dll
wmvcore---c:\windows\system32\wmvcore.dll
wmasf---c:\windows\system32\wmasf.dll
wdmaud---c:\windows\system32\wdmaud.drv
msacm32---c:\windows\system32\msacm32.drv
msacm32---c:\windows\system32\msacm32.dll
midimap---c:\windows\system32\midimap.dll
Flash9e---c:\windows\system32\macromed\flash\flash9e.ocx
xpsp3res---c:\windows\system32\xpsp3res.dll
schannel---c:\windows\system32\schannel.dll
imgutil---c:\windows\system32\imgutil.dll
pngfilt---c:\windows\system32\pngfilt.dll
ddrawex---c:\windows\system32\ddrawex.dll
ddraw---c:\windows\system32\ddraw.dll
dciman32---c:\windows\system32\dciman32.dll
dxtrans---c:\windows\system32\dxtrans.dll
atl---c:\windows\system32\atl.dll
dxtmsft---c:\windows\system32\dxtmsft.dll
mshtmled---c:\windows\system32\mshtmled.dll
iepeers---c:\windows\system32\iepeers.dll
winspool---c:\windows\system32\winspool.drv
mshtmler---c:\windows\system32\mshtmler.dllCOPY
至于说效率问题,在start msinfo32的时候确实要等待片刻,但显示的时候好像比你VBS代码还快一点点.

你说的功能 3通过模块找到所调用它的进程,在这里每一段第1句就是进程名,第2句是PID符,还是应该很容易看出来的吧.

我开始就说了没有做界面美化,实用为主,我不想为了这些无所谓的细节浪费过多的代码.

TOP

不相信算了,费事理你.

TOP

返回列表