使用Dumpbin搭配Findstr搜索OBJ文件时无法定位来源文件的问题
解决OBJ文件十六进制序列定位问题
原命令的问题在于一次性处理所有OBJ文件,输出内容混在一起,无法对应到单个文件。解决思路是逐个遍历OBJ文件,单独检查每个文件的原始数据,这样就能明确标记匹配的文件名。
替换为以下批处理脚本:
@echo off setlocal enabledelayedexpansion set "target=F8 0E BC 08" set "output=results.txt" :: 清空结果文件(可选,避免重复追加旧内容) echo. > %output% :: 遍历当前目录下所有OBJ文件 for %%f in (*.obj) do ( :: 对单个OBJ文件执行dumpbin,检查目标序列是否存在 dumpbin /rawdata "%%f" | findstr /L /I /C:"%target%" > nul :: 根据findstr的返回值判断是否匹配成功 if !errorlevel! equ 0 ( echo 匹配文件: %%f >> %output% :: 可选:如果需要同时记录匹配的具体行内容,替换上面的echo为以下两行 :: echo --- 文件: %%f --- >> %output% :: dumpbin /rawdata "%%f" | findstr /L /I /C:"%target%" >> %output% ) ) echo 搜索完成,结果已保存到 %output% endlocal
关键说明:
for %%f in (*.obj)实现逐个遍历当前目录下的OBJ文件- 利用
errorlevel判断当前文件是否匹配目标序列,匹配成功时记录文件名 - 开启
enabledelayedexpansion确保循环内的errorlevel值能正确获取
若需要搜索子目录中的OBJ文件,将遍历行修改为:
for /r %%f in (*.obj) do (
内容的提问来源于stack exchange,提问作者Elton Tom
相关产品推荐
相关产品推荐

