Ms-Dos - extraer subcadena a archivo

 
Vista:
sin imagen de perfil

extraer subcadena a archivo

Publicado por nicolas (9 intervenciones) el 25/10/2016 23:16:20
Buenas noches,

como podría extraer la cadena:
niki
de un archivo con el siguiente texto:
<dc:title>lo que sea</dc:title><dc:subject>lo que sea</dc:subject><dc:creator>niki</dc:creator><cp:keywords>cualquier otra cosa</cp:keywords>

en concreto, quiero sacar el texto que hay entre los tags <dc:creator> y </dc:creator> y pasarlo a un archivo.

A partir de esto podré seguir intentando la idea...!

Gracias por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manuel
Val: 17
Ha aumentado su posición en 3 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

extraer subcadena a archivo

Publicado por Manuel (13 intervenciones) el 12/11/2016 13:05:37
Lo que quieres, poder, lo que se dice poder, se puede hacer... Pero porque no vas a lo fácil y en lugar de con un bat haces con VBScript. El resultado es similar, pero si esto es parte de un proyecto más grande, etc, pues al final te facilitarás la vida.

Por ejemplo, abrir el archivo que quieres leer pues algo tan sencillo como:
1
2
3
4
5
6
7
8
9
10
11
Set controladorFSO = CreateObject("Scripting.FileSystemObject") 'creo el objeto con que interactuar con el sistema de ficheros
Set elArchivo = controladorFSO.OpenTextFile ("C:\ruta.txt", 1) 'aquí el 1 es para abrir como solo lectura el fichero
Do Until elArchivo.AtEndOfStream 'va a leer el archivo línea a líneas hasta el final
 
unaLinea = elArchivo.Readline
 
'ahora tocaría procesar esa línea buscando lo que quieres buscar, y para ello tienes acceso a todas las funciones de VB, con lo que es muy fácil, como usar InStr(), etc... por ejemplo InStr("<dc:creator>")
 
'después tocaría o lanzar por pantalla el resultado o guardarlo en un archivo (es igual que abrir para lectura, simplemente hace para escritura y en lugar de ReadLine, WriteLine... etc...
 
Loop

Funciones de texto que necesitarías:

InStr() que busca cadenas empezando por el principio (o desde un punto que digas), la cual usas pasa saber donde empieza y termina la subcadena buscada (algo fácil ya que sabes las estiquetas delimitadoras)

Right() devuelve la cantidad de caracteres empezando por el lado derecho de la cadena

Left() igual que la anterior pero empezando por el lado izquierdo

Como tienes las posiciones y largo de la cadena, usando las 2 últimas, pues coges justo la subcadena que quieres, por ejemplo cortas desde el lado izquierdo el largo de la cadena buscada, sacando eso del resultado de aplicar el corte del lado derecho desde donde empieza esa subcadena.

Aunque también podrás hacer esta parte en vbs y usar el script llamado desde un bat como si fuera un ejecutable cualquiera.

Espero haberte ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar