【发布时间】:2012-10-29 23:33:24
【问题描述】:
一个小问题困扰了我好几天。我正在尝试从 *.exe 二进制文件中提取我可以用正则表达式定义的字符串,例如“1.01.01.00T123”这样的文本到环境变量中以供进一步使用。
我用
findstr /i [0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][T][0-9][0-9][0-9] name.exe>outp.bin
现在它是我的字符串,用更小的二进制格式,可能是 200 字节。然后我试图在“for / f”中使用 findstr 的输出,但是我应该为二进制文件使用什么分隔符,没有任何保证。即使是点和空白也可以来来去去。
类似的东西:
for /f "tokens=1,2,3,4* delims=^." %%a in ('findstr /i [0-9]\.[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]T[0-9][0-9][0-9] name.exe') do (
echo %%a
echo %%b
echo %%c
echo %%d
)
它只工作了一半——第一个太长了,最后一部分“xxTxxx”不是这个定义的标记。此外,点也可能出现在二进制文件中,而不仅仅是在我的字符串中。
我想到了通过始终剪切第一个字节来缩短循环中的 outp.bin,然后检查我的字符串是否位于 outp.bin 的开头。但是还没有找到方法来做到这一点。有可能吗?
有什么方法可以让我将正则表达式结果复制到变量中变得不那么复杂?
我希望错过了标准命令外壳中正则表达式的一些神奇命令。
【问题讨论】:
标签: for-loop batch-file binary cmd findstr