BAT批处理获取指定字符串的最后一位索引

最近写一个bat批处理脚本的时候,想获取第一个指定字符串最后一位所在的索引,网上没有找到对应的例子,于是自己写了个,思路很简单,就是将字符串和要获取指定字符串进行遍历。
例:一串字符串:This is a test string 查找test并给出最后一个t的索引,查找a并给出a的索引

@Echo off 
::启用命令扩展
setlocal enabledelayedexpansion
::设置获取指定字符串中第一个匹配字符串中最后一位的索引
::例:设置为str2为is,则获取第一个is中s所在的位置,索引从1开始
set str1=This is a test string 
set str2=is
::调用这个方法,传入字符串str1和要查找的字符串str2。lens是它的返回值
call :getSubIndex str1 str2 lens
if "%lens%"=="" ( 
    echo "没有找到" 
)else (
    echo "字符串最后一个索引为:%lens%" 
)

exit /b
:getSubIndex
setlocal enabledelayedexpansion
:strLen_Loop
   set /A len+=1
   set /A len1+=0
   set /A num=len-1
   ::判断传入第二个参数要查找的字符是否已经遍历到了结尾,如果结尾了就说明匹配到了
   if not "!%2:~%len1%!"=="" (
   ::判断第一个传入的字符串是否已经遍历到了结尾
   if not "!%1:~%num%!"=="" (
        if not "!%2:~%len1%!"=="" (
            if "!%1:~%num%,1!"=="!%2:~%len1%,1!" (
            set /A len1=len1+1
            ) else (
                set /A len1=0
            )
             goto :strLen_Loop
        ) else (
              endlocal & set %3=%num%
            )
        )
    ) else (
        endlocal & set %3=%num%
    )
exit /b

你可能感兴趣的:(BAT批处理获取指定字符串的最后一位索引)