Limitar caracteres de una variable ¿Como hago? [Batch]

Iniciado por the_Avenger, 6 Octubre 2011, 01:22 AM

0 Miembros y 1 Visitante están viendo este tema.

the_Avenger

Les explico quiero hacer un cifrador y descifrador para cualquier nombre que el usuario ingrese.
Pero ¿que pasa? yo quiero que disperse las letras y luego las mezcle con otras pero el problema es que el usuario puede ingresar la cantidad de caracteres que quiera cuando yo pido el nombre. Entonces mi pregunta es ¿Se puede limitar la cantidad de caracteres para una variable? y de ser asi ¿Como?


Desde ya muchas gracias espero haber sido claro.

2Fac3R

Escuela de Hackers & Programación. http://ihackndev.blogspot.com/

the_Avenger

A perdon me habia olvidado de eso. Estoy usando batch paraprogramar. Y por las dudas ya se no es lo mejor pero estoy aprendiendo a usarlo por eso pregunto como hacerlo en este.

2Fac3R

No entendi lo de:

Cita de: the_Avenger en  6 Octubre 2011, 01:22 AM
Les explico quiero hacer un cifrador y descifrador para cualquier nombre que el usuario ingrese.
Pero ¿que pasa? yo quiero que disperse las letras y luego las mezcle con otras...


Lo de limitar la cantidad de caracteres de una variable en batch, pues se podria hacer con el tokens del FOR, contar los caracteres y con un condicional IF hacer cierta cosa si es Igual o menor (<=) a la cantidad limitante, y sino hacer otra cosa.
No se si me explico, si alguien nos pudiera ayudar con el code seria perfecto, estare probando a ver si logro algo..
Zalu2
Escuela de Hackers & Programación. http://ihackndev.blogspot.com/

Darioxhcx

o podes pedir la introduccion de una variable y solo usar los primeros 16 caracteres.. aunque escriban 78 supongamos, solamente estarias usando los 16

%variable:~0,15%

the_Avenger

Bueno gracias por los datos me gusta mas la idea del tokens el tema es que no entiendo muy bien como se usa el FOR.

2Fac3R

#6
Buscando por el foro, di con este code de M a a t:


Código (dos) [Seleccionar]
setlocal enabledelayedexpansion
set "count=0"
set "string=Hello World"
:loop
if "!string:~%count%,1!" neq "" set /a "count+=1" & goto loop
echo:La cadena "%string%" contiene %count% caracteres.


La verdad no entiendo mucho cuando se usa el setlocal, asi que no se como acomodarlo a lo que se necesita, aunque la opcion que nos da darioxhcx es mejor y sin tanta complicacion.  :xD

Nota: Sigo sin entender lo de esparsir y luego juntar los caracteres  :¬¬

Edito:

Encontre otra solucion mejor y con un code mas para nosotros  :xD
Leo Gutierrez
Código (dos) [Seleccionar]
@echo off
:code
set /p "cadena=Cadena : "
if not defined cadena goto:code
set /a "contador=0"
:bucle
set "cadena=%cadena:~1%"
set /a "contador+=1"
if defined cadena goto:bucle
echo Longitud : %contador%
pause>nul
exit /b 0


Es muy bueno el code y simple y entendible.
Zalu2
Escuela de Hackers & Programación. http://ihackndev.blogspot.com/

the_Avenger

Bueno esto no limita al usuario pero cuenta los caracteres hasta que no encuentra mas en la variable no?

leogtz

No hay manera de limitar la entrada a n carácteres, lo único que puedes hacer es encerrar al usuario en un ciclo hasta que haga lo que tú quieres, para ello tienes que contar los caracteres, y sino se cumple la condición le vuelves a pedir la entrada.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

the_Avenger

A bueno esta bien. Una pregunta que es ese codigo que pusiste alli abajo?