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

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

没做界面美化,实用为主.
因为网页不能处理Tab(跳格键),都会自动用空格代替,请下载附件使用.
  1. @echo off&setlocal enabledelayedexpansion
  2. ::code by foxjl@bbs.bathome.net 2008/01/07
  3. :menu
  4. cls&echo\&echo\
  5. echo.    1.显示进程及所被调用的模块(简洁)
  6. echo\
  7. echo.    2.通过进程查找并列出所调用的模块(包括模块详细信息)
  8. echo\
  9. echo.    3.通过模块找到所调用它的进程
  10. echo\
  11. echo.    4.结束进程
  12. :afresh
  13. echo\
  14. set/p choice=    请输入选项:
  15. set error=    错误的选择,请重新输入.
  16. if %choice% leq 0 (echo.%error%&goto afresh) else (if %choice% gtr 4 (echo.%error%&goto afresh))
  17. goto choice%choice%
  18. pause&exit
  19. :choice1
  20. cls
  21. tasklist /m /fo "csv" /nh
  22. echo.所有进程及所被调用的模块显示完毕.按任意键返回.
  23. pause>nul&goto menu
  24. :choice2
  25. del particular.txt >nul 2>nul
  26. echo\
  27. set /p name=    请输入进程名(如Q.exe):
  28. for /f %%i in ('TASKLIST /fi "IMAGENAME eq %name%" /fo "csv" /nh /m') do (
  29. set namedll=%%~i
  30. set namedll=!namedll:"=!
  31. echo !namedll!
  32. )
  33. echo\
  34. set /p yes=进程"%name%"调用的所有模块列举完毕,是否列出模块详细信息(Y/N):
  35. set /p all=A-仅路径(默认完整信息):
  36. mode con cols=150 lines=80
  37. if /i "%yes%"=="y" (
  38. start msinfo32 /categories +swenvloadedmodules /report particular.txt
  39. echo.请稍候...
  40. :particular
  41. if not exist particular.txt (
  42.    ping -n 1 127.1>nul
  43.    goto particular
  44.   ) else (
  45.     cls
  46.     if /i "%all%"=="A" (echo.名称---路径) else (echo.名称---版本---大小---文件日期---制造商---路径)
  47.     for %%i in (%namedll%) do (
  48.     if /i "%all%"=="A" (
  49.      for /f "delims=  tokens=1,6" %%j in ('type particular.txt ^| find /i "%%i"') do (
  50.      echo %%j---%%k
  51.     )
  52.     ) else (
  53.     for /f "delims=" %%j in ('type particular.txt ^| find /i "%%i"') do (
  54.     set particular=%%j
  55.     set particular=!particular: =-!
  56.     echo !particular!
  57.    )
  58.    )
  59.    )
  60.    echo.进程"%name%"调用的所有模块详细信息列举完毕,按任意键返回.
  61.    pause>nul&goto menu
  62. )
  63. )
  64. goto menu
  65. :choice3
  66. echo\&set /p b=输入DLL名:
  67. for /f "tokens=*" %%i in ('TASKLIST /m /fo "csv" /nh') do (
  68. echo %%i | find /i "%b%"
  69. if not %ERRORLEVEL% equ 0 echo\&echo %%i)
  70. echo\&echo.显示完毕.按任意键返回.
  71. pause>nul&goto menu
  72. :choice4
  73. Tasklist
  74. echo ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━以上是进程列表.
  75. Set /p IM=输入所要结束进程的名称(如:id.exe):
  76. taskkill /f /t /im %IM%
  77. ECHO 命令完成!按任意键返回.
  78. pause>nul&goto menu
复制代码
链接: 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完全路径的结果,看起来似乎不是很累.
  1. jscript---c:\windows\system32\jscript.dll
  2. vbscript---c:\windows\system32\vbscript.dll
  3. mfc42---c:\windows\system32\mfc42.dll
  4. mfc42loc---c:\windows\system32\mfc42loc.dll
  5. MSIMTF---c:\windows\system32\msimtf.dll
  6. msohev---c:\program files\microsoft office\office11\msohev.dll
  7. mpr---c:\windows\system32\mpr.dll
  8. drprov---c:\windows\system32\drprov.dll
  9. ntlanman---c:\windows\system32\ntlanman.dll
  10. netui0---c:\windows\system32\netui0.dll
  11. netui1---c:\windows\system32\netui1.dll
  12. netrap---c:\windows\system32\netrap.dll
  13. samlib---c:\windows\system32\samlib.dll
  14. davclnt---c:\windows\system32\davclnt.dll
  15. shgina---c:\windows\system32\shgina.dll
  16. msgina---c:\windows\system32\msgina.dll
  17. winsta---c:\windows\system32\winsta.dll
  18. odbc32---c:\windows\system32\odbc32.dll
  19. comdlg32---c:\windows\system32\comdlg32.dll
  20. odbcint---c:\windows\system32\odbcint.dll
  21. Audiodev---c:\windows\system32\audiodev.dll
  22. wmvcore---c:\windows\system32\wmvcore.dll
  23. wmasf---c:\windows\system32\wmasf.dll
  24. wdmaud---c:\windows\system32\wdmaud.drv
  25. msacm32---c:\windows\system32\msacm32.drv
  26. msacm32---c:\windows\system32\msacm32.dll
  27. midimap---c:\windows\system32\midimap.dll
  28. Flash9e---c:\windows\system32\macromed\flash\flash9e.ocx
  29. xpsp3res---c:\windows\system32\xpsp3res.dll
  30. schannel---c:\windows\system32\schannel.dll
  31. imgutil---c:\windows\system32\imgutil.dll
  32. pngfilt---c:\windows\system32\pngfilt.dll
  33. ddrawex---c:\windows\system32\ddrawex.dll
  34. ddraw---c:\windows\system32\ddraw.dll
  35. dciman32---c:\windows\system32\dciman32.dll
  36. dxtrans---c:\windows\system32\dxtrans.dll
  37. atl---c:\windows\system32\atl.dll
  38. dxtmsft---c:\windows\system32\dxtmsft.dll
  39. mshtmled---c:\windows\system32\mshtmled.dll
  40. iepeers---c:\windows\system32\iepeers.dll
  41. winspool---c:\windows\system32\winspool.drv
  42. mshtmler---c:\windows\system32\mshtmler.dll
复制代码
至于说效率问题,在start msinfo32的时候确实要等待片刻,但显示的时候好像比你VBS代码还快一点点.

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

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

TOP

不相信算了,费事理你.

TOP

返回列表