Hola a todos.
Tengo que hacer un script que pida al usuario una frase y cuente el numero de veces que sale la a en esa frase tanto en mayúsculas como en minúsculas y hasta ahora va bien pero no me sale la parte de contar la letra a en la variable, para contar usaría un contador, lo que no se es como hacer la comparación carácter a carácter de la frase y si hay "a" que agregue +1 al contador.
Alguna idea?
Gracias por adelantado! ;D
muestra tu código
@echo off
setlocal enabledelayedexpansion
:inicio
cls
set /p frase=Escribe una frase ?
if "%frase%" EQU "" goto inicio
set /a contador=0
for /l %%a in (0,1,1000) do (
)
:salida
echo La frase %frase% tiene %contador% letras a.
pause>nul
Batch es ridiculamente limitado, no es posible una iteración de caracteres ya que no existe ese tipo de loop, entonces, debes idear técnicas alternativas para llevar a cabo ese tipo de tarea, por ejemplo con un un For range (For /L) substrayendo cada caracter del string y defininendo un terminador de string, es decir, hay que añadirle un caracter especial al final del string para saber cuando salir de la iteración, al encontrar ese caracter especial.
Ejemplo:
@Echo OFF & Setlocal EnableDelayedExpansion
Set "finalizer=Ç"
Set /A "mayusCount=0"
Set /A "minusCount=0"
Echo: Type any string...
Set /P "str=>> "
Set "str=%str%%finalizer%"
For /L %%c In (0, 1, 99998) Do (
Set "char=!str:~%%c,1!"
If "!char!" EQU "A" (Set /A "mayusCount+=1")
If "!char!" EQU "a" (Set /A "minusCount+=1")
If "!char!" EQU "%finalizer%" (Goto :Break)
<Nul set /P "char=!char!"
)
:Break
Echo+ | More
Echo: "A" count: %mayusCount%
Echo: "a" count: %minusCount%
Pause&Exit /B 0
Saludos
Gracias por la respuesta, al final lo hice con un contador común para las letras mayúsculas y minúsculas,quedando asi:
setlocal enabledelayedexpansion
@echo off
:volver
cls
set /p frase=Escribe una frase :
if "%frase%" EQU "" goto volver
set /a contador=0
for /l %%a in (0,1,10000) do (
if "!frase:~%%a,1!" EQU "" goto salida
if "!frase:~%%a,1!" EQU "a" (set /a contador=!contador!+1)
if "!frase:~%%a,1!" EQU "A" (set /a contador=!contador!+1)
)
:salida
echo la frase %frase% tiene %contador% letras a.
pause>nul