批处理文件中提取Score=后的纯数字问题求助
修正Batch脚本提取Score后的纯数字
原脚本提取score=后的内容时,输出包含了后续的analyzer文本,原因是仅用=作为分隔符,导致score=后的所有内容(直到下一个=)被一并提取。以下是两种修正方案:
方案1:扩展分隔符包含空格
通过将分隔符设置为=和空格,直接提取独立的数字token:
@echo off setlocal for /F "tokens=3 delims== " %%a in ('findstr /I "ABCD.exe score=" 2023-02-22.log') do set "scanScore=%%a" echo Score is: %scanScore% endlocal
说明
以=和空格作为分隔符时,日志行被拆分为如下独立token:
ScanFolder\ABCD.exescore755analyzer
...
指定tokens=3即可直接获取目标数字。
方案2:嵌套循环二次分割
如果担心分隔符变化,可先提取score=后的全部内容,再按空格分割取第一个token:
@echo off setlocal enabledelayedexpansion for /F "tokens=2 delims==" %%a in ('findstr /I "ABCD.exe score=" 2023-02-22.log') do ( for /F "tokens=1" %%b in ("%%a") do set "scanScore=%%b" ) echo Score is: !scanScore! endlocal
说明
- 外层循环提取
score=后的内容(即755 analyzer=Cloud...) - 内层循环将该内容按空格分割,取第一个token得到纯数字
755 - 启用
enabledelayedexpansion确保循环内赋值的变量能正确输出
内容的提问来源于stack exchange,提问作者Anand Tewari
相关产品推荐
相关产品推荐

