如何计算日志文件中与 Windows 批处理脚本中的模式/正则表达式匹配的变量的出现次数



我正在尝试存储一个值的出现次数来计数变量。

set ATTR_TO_VERIFY=W10SBRS
for /F "tokens=*" %%N  in ('findstr /r "^<.*^>.*%ATTR_TO_VERIFY%.*:" lofile.log ^| find /v "" /c') do set "COUNT=%%N"
echo %COUNT%

但是计数总是给我值零。

@MCDN注释中指出的正则表达式错误是导致麻烦的错误。
您也可以在没有find /c的情况下做到这一点。要计算findstr命令结果中的行数,应执行以下操作:

set ATTR_TO_VERIFY=W10SBRS
for /F "tokens=*" %%N in ('findstr /n /r "<.*>.*%ATTR_TO_VERIFY%.*:" lofile.log') do set /a COUNT+=1
echo %COUNT%

不过,FOR /F会自动丢弃空行和以;开头的行。解决此问题的一种方法是将 /n 标志添加到findstr,并让findstr在每个匹配行的开头添加行号。

最新更新