Nuevas NORMAS para el foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse. - Mayo 16, 2008, 10:14:02
Boton Buscar
Inicio Ayuda Calendario Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, The Shadow)  |  Tema: Substring 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Substring  (Leído 26 veces)
plof
Recien Llegado
*
Desconectado Desconectado

Mensajes: 29



Ver Perfil Email
« en: Abril 24, 2008, 07:44:28 »

Buenas:
El problemilla que tengo es obtener un cadena de caracteres incluida en otra.
Suponiendo que la cadena inicial es de la forma:
       
                   "Token1    Token2    Token3 .......   --   Token4  Token5  Token6 ...."

lo que pretendo es obtener en una variable la cadena "Token5  Token6 ..."
El bucle for de la forma FOR /F no me vale ya que no se la cantidad de tokens que componen la cadena inicial.

Yo lo hice así:


SETLOCAL ENABLEDELAYEDEXPANSION
 @echo off&call:main %*&goto:EOF
set /A Global
:len
  set var=%1
  set /A c=%2
  if NOT "%var%"=="" (
    set var=%var:~1%
    set /A c=%c%+1
  )
  if "%var%"=="" (
    set /A Global=%c%
   
  ) else (
    call:len %var% c
  )
goto:eof

:mod1
  set cont=
  set LISTA=

  FOR %%i IN (%*)DO (
    set /A cont=!cont!+1
    set LISTA=!LISTA! %%i
   
    IF "%%i"=="--" (
      goto:end_for
    )
  )
  :end_for
    call:len %LISTA: =% 0
    set /A cont=%cont%+%Global%
    set LISTA=%*
    FOR /L %%i IN (1,1,%cont%) DO (call:res)

    call:mod2 "%LISTA%"
goto:EOF

:res
  set LISTA=%LISTA:~1%
goto:EOF

:res2
  set arch=%arch:~1%
goto:EOF

:mod2
  set cont2=
  set arch=

  FOR /F "tokens=1 delims= " %%i IN (%1) DO (
    set arch=!arch!%%i
  )
  call:len %arch% 0
  set /A cont2=1+%Global%+%cont%
  set arch=%*
  FOR /L %%i IN (1,1,%cont2%) DO (call:res2)

  FOR %%i IN (%arch%)DO (
    call:tam %%i
  )
goto:EOF

:main
  call:mod1 %*
  pause
goto:EOF


cadena1: Token1  Token2  Token3   
cadena2  Token4  Token5  Token6
cadena final   Token5  Token6

 @len: Cuenta las letras de una palabra recursivamente y lo almacena en Global
 @mod1: Extrae la primera cadena hasta el delimitador "--" (incluido) para contar los caracteres de la cadena1 y restarselos a la cadena inicial. Llama a mod2 pasándole como argumento cadena2.
 @mod2: Elimina el primer token de la cadena2 y cuenta las letras de ese 'Token4'  para restarlo a la cadena2.  YA TENGO LA CADENA FINAL!!
 @res1 y res2:  para restar letras de una cadena (con una función res bastaria....eso tengo q cambiarlo).
 @main: función ppal.

Pues eso, que después de volverme loco dos semanas intentando compriender ambitos de variable,  expansión de variables, paso de argumentos en funciones....etcetcetc me ha salido un churro como esto para hacer algo que en un lenguaje como c++ serían un par de lineas.

Mi pregunta es.....
¿HAY alguna función para el manejo de strings en batch que me permita hacer algo parecido con menos lineas de código?


Un saludo y Gracias por adelantado.





En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, The Shadow)  |  Tema: Substring « anterior próximo »
Ir a:  
Novedades, Dudas, Comentarios Y Sugerencias, Top 100, Off-Topic, Revista E-Zine, Revista E-Zine, Sistemas operativos libres. , HacK GeneraL, Phreaking, Bug y Exploits, Networking & Wireless, Overclocking, Refrigeracion y demas, Hardware, Electronica Y Robotica, Hack para newbies, Todo Messenger, Troyanos y virus, Programacion, Programacion para webmasters, Software, Cracks & Serialz, P2p, Bittorrent, Elinks, Diseño Grafico, Juegos PC, Mp3, Multimedia, Peliculas Divx, Juegos, Humor y Adultos. (Diversion), Paginas Webs Recomendadas, Videos,


Zona-Musical Juegos online Juego Gratis10 Solucion Hosting Videos De Musica 1juegogratis Dragonjar
Noticias
 Juegos De Coche juegos gratis online juegos Los Foros De Sexe Gratuit Sexo Duro Tierra Messenger Trucos
Ranking-Hits
Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC