Board logo

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

作者: luckboy45    时间: 2024-11-8 16:18     标题: 【已解决】批处理如何全盘搜索获得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
作者: aloha20200628    时间: 2024-11-8 18:38

本帖最后由 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
复制代码

作者: luckboy45    时间: 2024-11-8 19:11

本帖最后由 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
复制代码

作者: 77七    时间: 2024-11-9 08:14

  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
复制代码

作者: aloha20200628    时间: 2024-11-9 10:10

回复 3# luckboy45

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

作者: luckboy45    时间: 2024-11-9 10:49

回复 5# aloha20200628

目前我已经有多个方法获取DLL,只是多一种思路而已。再次感谢各位的帮助!~




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2