elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batch - Contar letras de una variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Batch - Contar letras de una variable  (Leído 15,014 veces)
carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Batch - Contar letras de una variable
« en: 28 Julio 2008, 22:02 pm »

Código:

::CarlitoS.dll
::Función que cuenta los carácteres de una variable
@echo off
setlocal enabledelayedexpansion

set /p palabra=Ingrese una palabra con espacios si quiere:

if defined palabra (call :length %palabra: =_%)
if defined %palabra: =_%.length (echo !%palabra: =_%.length!)

pause

goto :eof

:length
if "%*"=="" (goto :eof)
set arg=%*
set word=%*
set word=%word: =_%
set /a cont=0
:loop
if not defined word (goto end)
set word=%word:~1%
set /a cont +=1
goto loop
:end
set %arg: =_%.length=%cont%
goto :eof



« Última modificación: 28 Julio 2008, 23:45 pm por carlitos.dll » En línea

$hyDow

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #1 en: 29 Julio 2008, 15:53 pm »

if defined? []:! nunca lo vi, puedes explicar un poco el code? pinta interesante


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #2 en: 29 Julio 2008, 16:10 pm »

Bueno, creo que carlitos.dll puede explicarlo mejor... pero if defined  lo que hace es comprobar el valor de una variable, si la variable tiene algún valor (aunque sea un espacio), devuelve un verdadero, de lo contrario devuelve un falso  ;)

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Darioxhcx


Desconectado Desconectado

Mensajes: 2.294


Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #3 en: 29 Julio 2008, 18:20 pm »

esto estaba en los ejecicios puestos x SmartGenius no ?
yo tmb los iba ahacer hasta q llegaste y dijiste "los voy a hacer todos"
y perdio la gracia xD

pero sos una maa en batch man
saludos
En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #4 en: 29 Julio 2008, 21:00 pm »

If defined lo que hace es preguntar si una variable está definida.

Como al principio del code tengo un set /p palabra=Ingrese texto

si le haces un enter sin escribir nada, el cmd hace:
set palabra=
y borra esa variable.
Podría emularse así también: if not "%variable%"=="" pero no queda tan bien porqué si la variable contiene un " al principio el cmd se confunde con el código, y para eso hay que escribir más

call :length %palabra: =_%

significa que le paso un parametro a :length sustituyendo los espacios por _ lo que no significa que el contenido de la variable no pueda tener espacios, pero es para que no me los elimine al pasarlo por parametro. Ejemplo:
palabra=[espacio][espacio]abc
palabra tiene 5 caracteres

y si comienza con espacio y termina con espacio se borran si llamo a una función (función trim :D). Ejemplo:
call :length %palabra%
hace
call :length   abc
y pasa solo abc

:length
recibe todos los parametros en variable arg y en variable word
variable word redundantemente reemplaza los espacios por _ (aunque ahora pienso que se podría borrar esa línea porque ya viene con el reemplazo desde arriba) establecemos el cont en 0, y luego vamos eliminando un carácter por ciclo repetitivo, y aumentado el cont en 1, cuando ya no queden más letras, tendremos un set word= y la borramos, cuando word ya no está definida salimos del ciclo, y establecemos una variable con el nombre del parametro.length con el contenido de cont.  Ejemplo:

call :length   abc
call :length __abc
set __abc.length=%cont%

Luego cuando se sale de :length pregunta
¿está definida  __abc.length? si así es imprime dicha variable, esta vez ayudado por setlocal enabledelayedexpansion porque antes lo tenía así:
call echo %%%palabra: =_%.length%%
pero si el contenido de la variable comenzaba con un numero, el cmd se confundia al hacer un %1 y no imprimia bien.
« Última modificación: 29 Julio 2008, 21:53 pm por carlitos.dll » En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #5 en: 29 Julio 2008, 21:53 pm »

Actualizo el código

Código:
::CarlitoS.dll
::Función que cuenta los carácteres de una variable
@echo off
setlocal enabledelayedexpansion

set /p palabra=Ingrese una palabra con espacios si quiere:

if defined palabra (call :length %palabra: =_%)
if defined %palabra: =_%.length (echo !%palabra: =_%.length!)

pause

goto :eof

:length
set arg=%*
if not defined arg (goto :eof)
set word=%arg%
set /a cont=0
:loop
if not defined word (goto end)
set word=%word:~1%
set /a cont +=1
goto loop
:end
set %arg: =_%.length=%cont%
goto :eof
En línea

$hyDow

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #6 en: 29 Julio 2008, 23:26 pm »

buena explicación
estoy aprendiendo mucho de tus codes
En línea

carlitos.dll

Desconectado Desconectado

Mensajes: 266



Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #7 en: 29 Julio 2008, 23:46 pm »

Soluciono un pequeño bug:
al ingresar "" se muestra en pantalla la salida de set

Solución:
Código:
::CarlitoS.dll
::Función que cuenta los carácteres de una variable
@echo off

set /p palabra=Ingrese una palabra con espacios si quiere:

if defined palabra (call :length %palabra: =_%)
if defined [%palabra: =_%.length] (call echo %%[%palabra: =_%.length]%%)

pause

goto :eof

:length
set arg=%*
if not defined arg (goto :eof)
set word=%arg%
set /a cont=0
:loop
if not defined word (goto end)
set word=%word:~1%
set /a cont +=1
goto loop
:end
set [%arg: =_%.length]=%cont%
goto :eof
« Última modificación: 29 Julio 2008, 23:51 pm por carlitos.dll » En línea

celticsoft

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Batch - Contar letras de una variable
« Respuesta #8 en: 16 Junio 2021, 10:39 am »

_
« Última modificación: 16 Junio 2021, 20:52 pm por celticsoft » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Contar letras minusculas y mayusculas
Ejercicios
kay19 0 12,068 Último mensaje 9 Septiembre 2009, 20:06 pm
por kay19
contar letras de un texto « 1 2 3 4 »
Programación C/C++
ALONSOQ 33 27,446 Último mensaje 4 Julio 2012, 23:05 pm
por ALONSOQ
[Ayuda] Contar letras de una cadena C#
.NET (C#, VB.NET, ASP)
Leo_Programador 1 5,395 Último mensaje 30 Noviembre 2014, 09:26 am
por Eleкtro
contar numero de veces que sale la vocal a en una variable (batch)
Scripting
alberto3_3 4 4,367 Último mensaje 6 Julio 2015, 17:34 pm
por alberto3_3
Contar letras en cualquier oración
Programación C/C++
erickcasita 8 4,086 Último mensaje 7 Enero 2018, 18:10 pm
por vangodp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines