I have scripted String.bat to determine the position and length of a sub-string in a string.

The syntax for using String.bat is:

call String Str SubStr I|C Position Length

Where:

Str      is the string that you wish to search.                              SubStr   is the sub-string that you wish to locate in Str.                              I|C      is an I if you wish to ignore case, or a C is case is important.                              Position is a call directed numeric environment variable that will contain a                                        0 if SubStr was NOT found, or a number representing the position of SubStr in Str.                              Length   is a call directed numeric environment variable that will contain                                       the length of SubStr.
NOTE: See tip 9470 ยป A better way to determine the length of a string.

String.bat contains:

@echo off                              setlocal                              if \{%5\}==\{\} goto err                              set /a pos=0                              set /a len=0                              if exist "%TEMP%\String.vbs" goto parse                              @echo dim str, substr, tb, pos>"%TEMP%\String.vbs"                              @echo Set objshell = CreateObject("WScript.Shell")>>"%TEMP%\String.vbs"                              @echo Set objArgs = WScript.Arguments>>"%TEMP%\String.vbs"                              @echo str=objArgs(0)>>"%TEMP%\String.vbs"                              @echo substr=objArgs(1)>>"%TEMP%\String.vbs"                              @echo bt=objArgs(2)>>"%TEMP%\String.vbs"                              @echo pos = Instr(1, str, substr, bt)>>"%TEMP%\String.vbs"                              @echo Wscript.Echo pos ^& " " ^& Len(substr)>>"%TEMP%\String.vbs"                              :parse                              set bt=%3                              if /i "%bt%" EQU "I" set bt=1&goto poslen                              if /i "%bt%" NEQ "C" goto err                              set bt=0                              :poslen                              for /f "Tokens=1,2" %%a in ('cscript.exe //nologo "%TEMP%\String.vbs" %1 %2 %bt%') do (                               set /a pos=%%a                               set /a len=%%b                              )                              endlocal&set /a %4=%pos%&set /a %5=%len%                              goto :EOF                              :err                              @echo Syntax: call String Str SubStr I^|C Position Length                              endlocal&set /a %4=0&set /a %5=0