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

[文本处理] 【已解决】批处理如何全盘搜索获得DLL的详细路径

我有如下内容的list.txt

dl_peer_id.dll
dl_uac_tool.dll
DocShare.dll
download_engine.dll
down_dispatcher.dll
dphubt.dll
DWFShellExtension.dll

是获取的DLL名称,如何全盘搜索以上DLL,并获得其详细路径,最终输出成list1.txt,内容如下示意。

C:\WINDOWS\system32\down_dispatcher.dll
C:\WINDOWS\system32\CustomFace.dll
C:\WINDOWS\system32\dphubt.dll
C:\Program Files\ATI Technologies\DWFShellExtension.dll
D:\123\down_dispatcher.dll
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

回复 5# aloha20200628

目前我已经有多个方法获取DLL,只是多一种思路而已。再次感谢各位的帮助!~
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

回复 3# luckboy45

最近跟了楼主几个帖子,核心诉求就是要获取 *.dll 文件的全路径,已知有 msinfo/powershell/wmic 这些针对性方法,为何还要用最原始的 dir/b/s 全盘搜索呢?

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "delims=:" %%i in ('wmic logicaldisk get name ^| find ":"') do (
  4. 2>nul dir /b /s /a-d "%%i:\*.dll" | findstr /lig:"list.txt"
  5. 2>nul dir /b /s /a-d "%%i:\windows\*.dll" | findstr /lig:"list.txt"
  6. )) > "out.txt"
  7. pause
复制代码
1

评分人数

    • luckboy45: 完全实现效果!感谢帮助!技术 + 1
bat小白,请多指教!谢谢!

TOP

本帖最后由 luckboy45 于 2024-11-9 10:53 编辑

回复 2# aloha20200628

感谢你的热情帮助!代码运行提示“findstr无法打开list.txt”

问题应该出在DIR没有成功输出,即单独用(dir /b/s/a-d C:\abseil_dll.dll)>1.txt,能实现输出完整路径

于是修改成这样实现了详细路径的输出
  1. setlocal enabledelayedexpansion &set "s=" &cd.>list1.txt
  2. for /f "delims=" %%a in (list.txt) do (set s=!s! "%%a")
  3. for %%d in ("c:\", "d:\", "e:\") do (
  4.   cd /d %%d &(dir /b/s/a-d !s!)
  5. )>>list1.txt
复制代码
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

本帖最后由 aloha20200628 于 2024-11-9 09:59 编辑

回复 1# luckboy45

代码第三行设置要搜索多少个盘符根目录
假设 list.txt 总字符量不超过 8100 个字符 》为尽量提升 dir/b/s 一次性全盘搜索效率须尽量用满其命令行参数空间
  1. @echo off &setlocal enabledelayedexpansion &set "s=" &cd.>list1.txt
  2. for /f "delims=" %%a in (list.txt) do (set s=!s! "%%~nxa")
  3. for %%d in ("c:\", "d:\", "e:\") do (
  4.    cd /d %%d &dir /b/s/a-d !s!>>"list1.txt"
  5.    set "s=" &(for /f "delims=" %%a in (list1.txt) do echo,%%~nxa)>"0.0"
  6.    for /f "delims=" %%a in ('findstr /ivg:"0.0" list.txt') do (set s=!s! "%%a")
  7.    if not defined s goto[end]
  8. )
  9. :[end]
  10. del/q "0.0"&endlocal&pause&exit/b
复制代码

TOP

返回列表