批处理for循环统计变量中指定字符串的出现次数
统计批处理变量中指定字符的出现次数
需求:在变量Code=AAABASDG中查找字符串"A",每找到一次将计数加1,最终输出结果应为4(该变量包含4个"A")。
原示例代码的问题
原代码无法实现预期效果,因为for %%i in (%Code%) do会将整个变量值作为单个循环项,而非逐个字符遍历,导致判断条件永远不成立,最终输出0。
@echo off set /A C=0 set Code=AAABASDG for %%i in (%Code%) do IF "%%i"=="A" set /A C=%C%+1 echo %C% pause
正确实现代码
以下是能正确统计字符"A"出现次数的批处理脚本:
@echo off setlocal enabledelayedexpansion set /A C=0 set Code=AAABASDG :: 逐个遍历变量中的每个字符 for /L %%n in (0,1,99) do ( if "!Code:~%%n,1!"=="" goto :endloop if "!Code:~%%n,1!"=="A" set /A C+=1 ) :endloop echo !C! pause endlocal
代码说明
setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环中变量的更新能被实时读取。for /L %%n in (0,1,99):生成从0开始的索引,遍历变量的每个字符位置(99为足够大的上限,覆盖大多数场景)。!Code:~%%n,1!:提取变量Code中第%%n位的单个字符。- 当提取的字符为空时,说明已遍历完所有字符,跳转到循环结束标签;如果字符是"A",则计数加1。
内容的提问来源于stack exchange,提问作者Executioner
相关产品推荐
相关产品推荐

