{Resuelto} [Batch Help!] ayuda con conversion de caracteres..

Iniciado por xassiz_, 16 Septiembre 2009, 17:50 PM

0 Miembros y 3 Visitantes están viendo este tema.

xassiz_

set "variable=%variable:a=1%"
set "variable=%variable:A=2%"


Ok, mi problema es para diferenciar mayúsculas de minusculas. Hay alguna forma?

Pense con un IF..

if ["%variable%"]==["a"] (set "variable=%variable:a=1%")
if ["%variable%"]==["A"] (set "variable=%variable:A=2%")


Pero si el contenido de %variable% tiene mas de un caracter ya no serviría..


Ahora mismo se me ocurrio hacer algo con findstr pero nunca lo supe utilizar bien..



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Novlucker

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

xassiz_

#2
No es eso lo que busco xDD

Cita de: Novlucker en 16 Septiembre 2009, 17:55 PM
Ok, mi problema es que no leo  :rolleyes:

Me refiero a hacer una conversion de caracteres dependiendo de si es mayuscula o minuscula:

set "variable=%variable:a=1%"
set "variable=%variable:A=2%"

::no funciona porque la cmd lee igual "a" que "A"



EDITO: creo que al final tendré que meter cada letra en una variable u.u



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

0x5d

Cita de: xassiz en 16 Septiembre 2009, 17:58 PM
No es eso lo que busco xDD

Cita de: Novlucker en 16 Septiembre 2009, 17:55 PM
Ok, mi problema es que no leo  :rolleyes:

Me refiero a hacer una conversion de caracteres dependiendo de si es mayuscula o minuscula:

set "variable=%variable:a=1%"
set "variable=%variable:A=2%"

::no funciona porque la cmd lee igual "a" que "A"

EDITO: creo que al final tendré que meter cada letra en una variable u.u


set "name=Jsvier"
set name=%name:s=a%
echo %name%

Eso reemplaza la s por a y daria Javier, haz lo mismo.

Saludos.
¡ SIGUEME EN TWITTER -> @JavierEsteban__ !

xassiz_

Eso lo sabía hacer hace 5 años.. leed antes de responder!!


Si lees detenidamente el post, te enterarás.  Vuelvo a explicar:


set "variable=M.texto.m"


Y quiero que la variable quede así:

set "variable=1.texto.2"


Es decir, set no distingue entre mayúsculas y minúsculas.

Pero yo quiero distinguir, ese es el problema.

La unica solucion, es medir la longitud de la variable, y luego meter cada caracter en una variable.

Luego al tener los caracteres separados podré compararlos con un if.



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Guerrerohgp

bueno compa.
Desde mi punto de vista lo q creo puedes hacer es activar la variables retrasadas,
meter el texto en una variable, extraer el primer caracter, crear otra variable donde se vuelvan a agregar los caracteres para q el bucle no sea infinito, hacer la comprobacion de caracteres con if dentro de el bucle y fianlmente ir al final del code XD.
ej:
Código (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion
:ini
set /p "txt=text: "
if not defined txt goto ini
set "h=0"
:HGP
set "text=%txt%"
set "txt2=!txt:~%h%,1!"
set /a h+=1
set "txt3=%txt3%txt2%"
::aqui tu cambio de mayusculas a minusculas q puede hacerse con for.
::ej: for %%a in (A B C D E F G H) do (if not "!txt2!"=="%%a" (
::set  text=!text:%txt2%=%%a)
::)
if "%txt3%"=="%txt%" goto fin
goto:HGP

:fin
echo %txt% es: %text%
pause>nul



esa seria la idea, jiji un code vale mas q mil palabras.

espero haberte ayudado.

la ota opcion es hacer el bucle con el for pero con esto bastaria. creo q fue tu idea desde el principio no?

saludox
pd: no termino  el code ni lo dejo funcional por q es tu trabajo no? jiji

xassiz_

A ver, no quiero hacer un cambio de mayusculas a minusculas!! Para eso se haría mas facil asi..


@echo off
setlocal enabledelayedexpansion
set "texto=hola"
for %%_ in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (set "texto2=!texto:%%_=%%_!")
echo.Antes: %texto%
echo.Despues: %texto2%
pause
exit



Quiero diferenciar los caracteres en mayuscula de minuscula!!



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Guerrerohgp

Perdon, me equivoque, si entendi tu idea, lo k paso fue q especifique mal devi poner  envez de
Cita de: Guerrerohgp en 16 Septiembre 2009, 22:20 PM
Código (dos) [Seleccionar]

::aqui tu cambio de mayusculas a minusculas q puede hacerse con for.
::ej: for %%a in (A B C D E F G H) do (if not "!txt2!"=="%%a" (
::set  text=!text:%txt2%=%%a)
::)


devi de poner
Código (dos) [Seleccionar]
::aqui detectas las mayusculas de minusculas que puedes hacer con for
::ej: for %%a in (A B C D E F G H) do (if not "!txt2!"=="%%a" (
::tu cambio)
::)





Creo k fue por eso q lo puse en comentario y no como code completo  ;D ;D
lo de mayusculas y minusculas como lo pones jeje se hace de diversas maneras.xD ;-)

pero bueno perdon por la xvocacion. ::) ::) ::)

Suerte con tu proyect!!


xassiz_

#8
Gracias, pero al final desarrollé esto que me sirve perfectamente ^^

;)




EDITO:

Pues al final no es tan facil como esperaba.. no se porque no me funciona esto:


@echo on
setlocal enabledelayedexpansion
:main
cls
set/p "texto=String>> "
set/a cont=0
call :lenght
cls
set "string=%texto%"
for /l %%_ in (1,1,%cont%) do (
if ["!let[%%_]!"]==["A"] (set "string=%string:A=1%")
if ["!let[%%_]!"]==["B"] (set "string=%string:B=2%")
if ["!let[%%_]!"]==["C"] (set "string=%string:C=3%")
if ["!let[%%_]!"]==["D"] (set "string=%string:D=4%")
if ["!let[%%_]!"]==["a"] (set "string=%string:a=5%")
if ["!let[%%_]!"]==["b"] (set "string=%string:b=6%")
if ["!let[%%_]!"]==["c"] (set "string=%string:c=7%")
if ["!let[%%_]!"]==["d"] (set "string=%string:d=8%")
)
echo.%texto%
echo.
echo.%string%
pause
exit
:lenght
set "var=!texto:~%cont%,1!"
if not defined var (goto:eof)
set/a cont+=1
set "let[%cont%]=%var%"
goto:lenght


Si introduzco abcd la salida debería ser 5678, y si introduzco ABCD debería ser 1234.


Porque no distingue mayus. de minus.??


Lo peor, es que tampoco funciona sin distinguir Y_Y



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

Guerrerohgp

bueno,  pok no solo envias a cifrar un caracter a le vez, si estubiste intentando seguro te diste cuenta q si los cambias te dara diferente, prueva cada letra.

ej:
abres tu script y ingresas a
te dara 5 y si ingresas A te dara 1, solucion enviar uno por uno. ;D
suerte.!!!