批处理文件计算字符串中字符的所有出现次数

Ron*_*ndy 4 cmd batch-file increment count

我的版本号是 17.06.01.01,我想知道有多少条目被句点分割。

我的最后一段代码是;

setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=1-10 delims=." %%a in ("17.09.01.04.03") do (
set /a "iCount+=1"

echo %%a, !iCount!
)
endlocal
Run Code Online (Sandbox Code Playgroud)

我尝试过许多“For”命令,但似乎每次都离我越来越远。

Ste*_*han 5

用空格替换每个点(作为分隔符)。然后计算令牌的数量:

@echo off
set "string=17.09.01.04.03"
set count=0
for %%a in (%string:.= %) do set /a count+=1
echo %count%
Run Code Online (Sandbox Code Playgroud)

(如果字符串中存在其他空格、逗号或制表符,可能会给出错误结果,但对于仅包含数字和点的版本字符串示例来说应该很好用)

@treintje:

echo off
set "string=1>7.0 9.0&1.04.0!3"
set count=0
:again
set "oldstring=%string%"
set "string=%string:*.=%"
set /a count+=1
if not "%string%" == "%oldstring%" goto :again
echo %count%
Run Code Online (Sandbox Code Playgroud)