elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Remplazar la linea entera...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Remplazar la linea entera...  (Leído 2,196 veces)
Cascuda

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Remplazar la linea entera...
« en: 25 Abril 2015, 21:06 pm »

Hola gente, he estado buscando en el foro pero sin encontrar solución alguna... Puede ser por que no he buscado bien, o no supe buscar correctamente lo que quería hacer.

Os voy a explicar mi problema: Quiero modificar un archivo, que es donde se define las conexiones del Oracle. Llego a hacerlo... me modifica la conexión, pero me desplaza el texto que tengo después de Host y Port

Ejemplo de como queda el archivo modificado: "Os dejo la parte del código donde modifica, ya que tiene definido mas conexiones Oracle"
Código
  1. BDI.inet.com =
  2.   (DESCRIPTION =
  3.  (ADDRESS_LIST =
  4. (ADDRESS =
  5.   (COMMUNITY = tcp.inet.com)
  6.   (PROTOCOL = TCP)
  7.   (Host = Cascuda.com) pepito.com)
  8.   (Port = 8888) 1234)
  9. )
  10.  )
  11.  (CONNECT_DATA =
  12. (SID = BDI)
  13. (GLOBAL_NAME = BDI.inet.com)
  14.  )
  15.   )

Como veis, me pone correctamente (Host = Cascuda.com) pero, me deja el nombre que tenia el antiguo Host desplazado hacia la derecha y lo mismo que me pasa, con el dato del puerto.

Y este es el código VBS que estoy utilizando... creo que me falta algo por definir. Pero no me doy cuenta de que podrá ser.


Código
  1. Const ForReading = 1
  2. Const ForWriting = 2
  3.  
  4. Set objFSO = CreateObject("Scripting.FileSystemObject")
  5. Set objFile = objFSO.OpenTextFile("C:\Temp\ADD\tnsnames_prueba.ora", ForReading)
  6.  
  7. strText = objFile.ReadAll
  8. objFile.Close
  9. strNewText = Replace(strText, "BDI.inet.com =", "BDI.inet.com =")
  10. strNewText1 = Replace(strNewText, "(Host =", "(Host = Cascuda.com)")
  11. strNewText2 = Replace(strNewText1, "(Port =", "(Port = 8888)")
  12.  
  13. Set objFile = objFSO.OpenTextFile("C:\Temp\ADD\tnsnames_prueba.ora", ForWriting)
  14. objFile.WriteLine strNewText2
  15.  
  16. objFile.Close



[MOD]: Utiliza las etiquetas GeShi para insertar código.


« Última modificación: 25 Abril 2015, 21:25 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.810



Ver Perfil
Re: Remplazar la linea entera...
« Respuesta #1 en: 25 Abril 2015, 22:01 pm »

Con la función Replace nada vas a conseguir ya que le indicas el texto exacto a reemplazar, si quieres reemplazar una cadena de texto desconocida entonces puedes hacerla coindicir utilizando expresiones regulares:

Código
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Set sourceFile = FSO.OpenTextFile("source file.txt", 1)
  3. Set targetFile = FSO.OpenTextFile("target file.txt", 2, True)
  4.  
  5. Set hostRegex = New RegExp : hostRegex.Pattern = "\(Host\s+=\s+.+\)"
  6. Set portRegex = New RegExp : portRegex.Pattern = "\(Port\s+=\s+\d+\)"
  7.  
  8. host = "foro.elhacker.net"
  9. port = "80"
  10.  
  11. text = sourceFile.ReadAll
  12. text = hostRegex.Replace(text, "(Host = " & host & ")")
  13. text = portRegex.Replace(text, "(Port = " & port & ")")
  14.  
  15. targetFile.Write text
  16.  
  17. sourceFile.Close
  18. targetFile.Close
  19.  
  20. wScript.Quit(0)

Si quieres algo un poco más elaborado puedes asignar agrupaciones en las expresiones y luego utilizarlas en el objeto RegExp.

Saludos


« Última modificación: 25 Abril 2015, 22:06 pm por Eleкtro » En línea

Cascuda

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: Remplazar la linea entera...
« Respuesta #2 en: 25 Abril 2015, 22:25 pm »

Muchas gracias Elektro, me has abierto los ojos despues de días atascado con este problema. He probado el código y me fallo el cambio del Port, pero ya voy a buscar ahora mismo lo que pasa...

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
remplazar una carpeta moviendola?
Programación Visual Basic
soru13 2 1,385 Último mensaje 21 Junio 2006, 17:28 pm
por soru13
¿¡Remplazar el enter por un caracter? « 1 2 »
Programación Visual Basic
TheGhost(Z) 11 9,984 Último mensaje 2 Agosto 2006, 00:21 am
por elmaro
remplazar linea de un textbox multi linea « 1 2 »
Programación Visual Basic
andrer03 11 9,082 Último mensaje 9 Mayo 2009, 14:49 pm
por Karcrack
Remplazar texto: salto de línea
Dudas Generales
MasterPunk 6 33,601 Último mensaje 1 Agosto 2011, 07:01 am
por WaAYa HaCK
remplazar .php?xxx por xxx
PHP
marcos raketsky 4 3,845 Último mensaje 29 Junio 2016, 16:31 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines