[OT]BAT, obtener subcadenas dentro de una cadena

04/02/2005 - 23:43 por F | Informe spam
Hola, estoy programando un BAT y me encuentro en un problema

Tengo una linea de tipo "TEXTO1 espacio TEXTO2 espacio TEXTO3", y me
buscaria extraer y poner en una variable el texto2, en linux lo haria con
"cut", pero no encuentro nada similar para el xp. alguien sabe como hacerlo
(extraer una cadena de texto en una linea con varios items, separados por
espacios?)

Un saludoi y gracias

Preguntas similare

Leer las respuestas

#6 JM Tella Llop [MVP Windows]
05/02/2005 - 00:46 | Informe spam
Se me olvidaba:

1) ¿como sabe que a acabado la funcion que debe volver? :-O



Facil... el final del fichero equivale a un return... :-)

2º si en vez de terner la variable asi set nombre=fulano detal, la
tengo asi set nombre=fulano,detal (es decir separados los campos con
una " , ") como separaria los campos.



Igual. La coma tambien vale de delimitador en el shift.

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"F" wrote in message
news:
Gracias, mas o menos es esto lo que quiera, tengo una variable que
contiene cadenas y espacios en blanco, y necesito el segundo campo (es
decir la segunda subcadena), pero ya me areglo yo arreglando el .bat.
que quedaria mas o menos asi:

@echo off
set nombre=fulano detal

call :a00 %nombre%
REM resto del script
echo su apellido es %ip%
goto :FIN

:a00
shift
set ip=%1

:FIN
pause


¡Pero me has hecho surguir nuevas dudas!

1ºUna de ellas, es por que vuelve la despues del CALL, al punto que lo
llamo, eso me ha dejado perplejo (hice una primera prueba donde yo le
hacia volver con un goto, y me imprima el mensaje dos veces, despues
lo quite, y realmente retorna despues del call), lo que quiero decir,
es que intuto que :a00 al llamarlo con el call es algo como un
funcion, pero si no hay ningun punto de retorno (estilo return o ret,
algo asi), ¿como sabe que a acabado la funcion que debe volver? :-O

2º si en vez de terner la variable asi set nombre=fulano detal, la
tengo asi set nombre=fulano,detal (es decir separados los campos con
una " , ") como separaria los campos.

muchas gracias (y por el otro mensaje tb, que es muy util)

Un saludo




"JM Tella Llop [MVP Windows]" escribió en el
mensaje news:
si lo que quieres es una variable que contiene cadenas y espacios en
blanco y quuieres cortar por los espacion en blanco:

@echo off
set var=texto1 texto23 texto2556

call :a00 %var%
REM resto del script
goto :EOF

:a00
if {%1}=={} goto :EOF
echo %1
shift
goto :a00


Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna
clase, y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"JM Tella Llop [MVP Windows]" wrote in message
news:%
No te entiendo

¿quieres sustituir o quitar texto2? Muy facil:

set var=texto1 texto2 texto3

set nuevovar=%var:texto2=cambiado%

lo anterior cambia texto2 por la palabra "cambiado"

¿quiere eliminarlo?:

set nuevovar=%var:texto2=%

¿quieres el substring?

set nuevovar=%var:~7,6%

facil :-)

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna
clase, y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"F" wrote in message
news:e5%
Hola, estoy programando un BAT y me encuentro en un problema

Tengo una linea de tipo "TEXTO1 espacio TEXTO2 espacio TEXTO3", y
me buscaria extraer y poner en una variable el texto2, en linux lo
haria con "cut", pero no encuentro nada similar para el xp. alguien
sabe como hacerlo (extraer una cadena de texto en una linea con
varios items, separados por espacios?)

Un saludoi y gracias











Respuesta Responder a este mensaje
#7 F
05/02/2005 - 00:54 | Informe spam
Genial, ya tengo todo lo que necesita saber, para ponerme a ello, muchas
gracias de nuevo.


"JM Tella Llop [MVP Windows]" escribió en el mensaje
news:%
Se me olvidaba:
Respuesta Responder a este mensaje
#8 JM Tella Llop [MVP Windows]
05/02/2005 - 20:01 | Informe spam
Por cierto, este otro script que he hecho es mucho mas elegante.

@echo off
setlocal enabledelayedexpansion

set nombre=Jose-Manuel Tella Llop

set /a i=0
set tabla_for %%e in (%nombre%) do (set /a i+=1 & set tabla_!i!_=%%e)

echo Primer Apellido: %tabla_2_%
echo.
echo Completo:
set tabla_


endlocal

Jose Manuel Tella Llop
MVP - Windows
(quitar XXX)
http://www.multingles.net/jmt.htm

Este mensaje se proporciona "como está" sin garantías de ninguna clase,
y no otorga ningún derecho.

This posting is provided "AS IS" with no warranties, and confers no
rights.
You assume all risk for your use.



"F" wrote in message
news:
Genial, ya tengo todo lo que necesita saber, para ponerme a ello,
muchas gracias de nuevo.


"JM Tella Llop [MVP Windows]" escribió en el
mensaje news:%
Se me olvidaba:




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida