找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 11362|回复: 5

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

[复制链接]
发表于 2024-11-8 16:18:17 | 显示全部楼层 |阅读模式
我有如下内容的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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-11-8 18:38:41 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2024-11-8 19:11:23 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2024-11-9 08:14:52 | 显示全部楼层
  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技术 +1 收起 理由
luckboy45 + 1 完全实现效果!感谢帮助!

查看全部评分

发表于 2024-11-9 10:10:23 | 显示全部楼层
回复 3# luckboy45

最近跟了楼主几个帖子,核心诉求就是要获取 *.dll 文件的全路径,已知有 msinfo/powershell/wmic 这些针对性方法,为何还要用最原始的 dir/b/s 全盘搜索呢?
 楼主| 发表于 2024-11-9 10:49:29 | 显示全部楼层
回复 5# aloha20200628

目前我已经有多个方法获取DLL,只是多一种思路而已。再次感谢各位的帮助!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 14:47 , Processed in 0.019944 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表