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..
Cita de: xassiz en 16 Septiembre 2009, 17:50 PM
Ok, mi problema es que no busco :rolleyes:
Algunos post más abajo:
http://foro.elhacker.net/scripting/como_convertir_mayusculas_a_minusculas_y_viceversa_en_batch_ayuda-t267187.0.html
Saludos
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
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.
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.
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:
@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
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!!
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
::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
::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!!
Gracias, pero al final desarrollé esto (http://foro.elhacker.net/scripting/funcion_lenght_efecto_by_xassiz-t267758.0.html) 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
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.!!!
setlocal enabledelayedexpansion
:main
set "string="
set /p "string=string: "
if not defined string goto main
set "output="
set "count=0"
:loop
if "!string:~%count%,1!" neq "" (
set "char=!string:~%count%,1!"
if "!char!" equ "A" set "output=!output!0"
if "!char!" equ "B" set "output=!output!1"
if "!char!" equ "C" set "output=!output!2"
if "!char!" equ "D" set "output=!output!3"
if "!char!" equ "E" set "output=!output!4"
if "!char!" equ "a" set "output=!output!5"
if "!char!" equ "b" set "output=!output!6"
if "!char!" equ "c" set "output=!output!7"
if "!char!" equ "d" set "output=!output!8"
if "!char!" equ "e" set "output=!output!9"
set /a "count+=1"
goto loop
)
echo output: !output!
goto main
string: ABCDEabcde
output: 0123456789
Generosidad de Matt ::)
Vuelvo, pero como veo q no quisiste usar mi code te lo muestro. :D
jiji, esq durante un tiempo estuve bregando con la encriptacion batch y esos problemas ya los pase.
te dejo el code de mas arriba pero esta vez funcional.
disculpa si no lo postee hace rato pero la uni me tiene loco ;)
ya te lo dejo funcinal
@echo off
title ayuda para xassiz&color f0
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%"
set "x=0"&for %%a 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
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 /a "x+=1"&if "!txt2!"=="%%a" set "ft=!ft!!x!")
if "%txt3%"=="%txt%" goto fin
goto:HGP
:fin
echo %txt% es: %ft%
pause>nul
por si las moscas y quieres cifrar el espacio, yo lo convertia a _ y en el momento de la desencriptacion lo reconvertia en " ".
repito
SUERTE!!! ;D ;D ;D
bue gracias xD No veia la manera ;D
No esta bien. no somos perfectos devi de ponerte el code de primero pero apuesto a q aprendiste mas intentando q a q cuando te lo puse.
la vida es asi. suerte.
saludOCX