Funciones utiles [batch]

Iniciado por << Lucas, ¿quién más? >>, 12 Febrero 2010, 00:37 AM

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

<< Lucas, ¿quién más? >>

Aqui estan otras más que pude encontrar en mi extinto disco.

EDITO: Ya supe de quien eran los códigos: The Shadow  :silbar:

Invertir cadena de texto

@echo off
::Por: yo no, si The Shadow ¬¬, jeje
::Info: Invierte una cadena especifica
::Parametros: %1=cadena
::Devuelve: %ohce%=cadena invertida
:ohce
set wrd=
set ohce=
if %1'==' goto er_o
set wrd=%1
set wrd=%wrd:"=cnf%
call :len %wrd%
set /a len=%len%-1
for /l %%a in (%len%,-1,0) do (
call :st %%wrd:~%%a,1%%
)
set ohce=%ohce:"=%
set ohce=%ohce:fnc="%
echo %ohce%
goto :EOF
:st
set p1=%1
set ohce=%ohce%%p1%
goto :EOF
:len
if %1'==' echo La sintaxis es: len [cadena] && goto :EOF
set w=%1
set a=0
set bol=0
:lp
call :cnt "%%w:~%a%,1%%" %a%
if %bol%==1 goto :EOF
set /a a=%a%+1
goto lp
:cnt
set cur=%1
set len=%2
if %cur%a==""a (
set bol=1
)
goto :EOF
:er_o
echo La sintaxis es: h2d [cadena]
goto :EOF


Longitud de cadena

@echo off
::LEN
::Info: Regresa la longitud de la cadena especificada.
::      Si la cadena contiene espacios, el script
::      tomara la cadena que esta antes del 1er espacio.
::Parametros: %1=cadena
:len
if %1'==' echo La sintaxis es: len [cadena] && goto :EOF
set w=%1
set a=0
set bol=0
:lp
call :cnt "%%w:~%a%,1%%" %a%
if %bol%==1 goto :EOF
set /a a=%a%+1
goto lp
:cnt
set cur=%1
set len=%2
if %cur%a==""a (
echo %len%
set bol=1
)
goto :EOF


Personalmente, prefiero tecnologías de Microsoft. Yo reconozco que defendí el software libre, pero ahora yo quiero vivir de esto. Mi trabajo.

---saster---

#1
mmmm se ven buenas y bien trabajadas

yo hice hace poco un code de la longitud de una string, bastante mas sencillo pero que sirve igual
Código (dos) [Seleccionar]

@echo off
set /p string= ingrese cadena ^>
set cont=0
:ini
call:script "%%string%:~%cont%,1%%"
:script
if %1=="" (
echo %cont%
pause>nul
exit
) else (set /a cont+=1&goto:ini)
goto:eof


me acabo de dar cuenta de que la de shadow al estar en modo comando solo cuenta hasta el primer espacion y el mio cuenta todo, los espacios y mas palabras

se puede arreglar poniendo un

for /f "tokens=1 delims= " %%a in ("%string%") do (set string=%%a)

si no tambien pueden modificar el de shadow para que no coja solo una palabra, sería cambiar la linea

set w=%1
por
set "w=%*"

saludos

xassiz_

Si los hizo shadow porque pone Por Lucas AC?



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

<< Lucas, ¿quién más? >>

#3
Cita de: xassiz en 16 Febrero 2010, 17:20 PM
Si los hizo shadow porque pone Por Lucas AC?

Gracias por tu comentario, pero antes ya había resaltado que los códigos son de The Shadow, amigo  :¬¬.


Personalmente, prefiero tecnologías de Microsoft. Yo reconozco que defendí el software libre, pero ahora yo quiero vivir de esto. Mi trabajo.

xassiz_

Y que? Si lo pones en el codigo no es lógico.



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE