我有一个要求,在日志文件中,我必须搜索字符串“ABCD.exe得分=755”,然后找到什么是“得分="后的数字,数字将发生变化。这我必须通过一个批处理文件。
正在搜索的文件的内容
ScanFolder\ABCD.exe score=755 analyzer=Cloud prevScore=0 IsInArchive=False
从下面的代码中,我得到的输出是“755 analyzer”,而结果应该只是“755”
@echo off
setlocal
find "ABCD.exe score=" 2023-02-22.log > ABCD.txt
for /F "tokens=2 delims==" %%a in ('findstr /I "score=" ABCD.txt') do set "scanScore=%%a"
echo Score is: %scanScore%
endlocal
1条答案
按热度按时间rxztt3cl1#
空白字符可能不是空格,因为这些选项中的第一个选项被报告为失败。这些字符可能是制表符,或者输出字符串可能是Unicode。OP应使用十六进制编辑器检查
5
后面字符的实际ASCII值。第二种方法应该是先删除读入
line
的字符串中位于字符串score
之前的部分,留下=755?analyzer...
。因此,使用一个循环并检查该字符串中的 second 字符(因为它最初的开头是一个
=
),如果它是数字,则将其串入结果变量,然后删除line
的第一个字符并重复,直到找到非空格和非数字的神秘字符。我使用了一个不同的文件名,因为我用他们的个人数据来维护我的响应。
此外,我还将
echo
ed响应括在由+
字符组成的括号中,以显示结果中没有杂散空格。