Tengo que buscar una palabra en una frase introducida, el problema es que no se como contar posiciones
No puedo usar for (no nos deja usarlo la profesora).
Pues entonces no es un ejercicio práctico. Sinceramente esa profesora no debería estar enseñando algoritmos recursivos ni otras metodologías que sean rebuscadas para conseguir hacer lo que hace un FOR de la única forma eficiente en Batch, por que eso son malos hábitos de programación y tiene sus consecuencias.
El modo eficiente de determinar la posición de un caracter en una cadena de texto es usando un FOR para poder iterar los caracteres y así ir sumando sus índices. La otra metodología sería usando etiquetas (Call, GoTo. Labels), saltanto de una parte del código a otro y esto en según que circunstancias (demasiado recursividad saltos/llamadas consecutivas) inevitablemente desbordará la cola de la pila de llamadas generando un error de desbordamiento de la pila de llamadas, valga la redundancia.
De verdad te lo digo, es un peligro acostumbrarse a hacer estas malas prácticas y tomarlo como costumbres, por que esto solo servirá para conseguir ser un mal programador que tienda a crear
código spaguetti, mal estructurado y con alto riesgo de errores. Pero en fin, si te han pedido hacerlo de la manera menos práctica en la programación entonces aquí te enseño el modo:
Call :
FindStrPos "
%str%" "
%find%" Y :
: Result: 7
Call :
FindStrPos "
%str%" "hello" N :
: Result: 0
(nul, because "N" of sensitive case search
)
:FindStrPos :: %1=InputString, %2=FindString, %3=IgnoreCase(Y/N)
(
Echo:
%funcInput%|FindStr
%ignoreCase% /B /C:"
%funcFind%"
Set "funcInput=
%funcInput:~1%"
)
¡Saludos!