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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Cambiar una o varias palabras dentro de un TXT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar una o varias palabras dentro de un TXT  (Leído 3,779 veces)
VTRPE

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Cambiar una o varias palabras dentro de un TXT
« en: 8 Agosto 2022, 16:51 pm »

Buenas tardes, he intentado, sin éxito, varias formas de hacer esto con algún script, pero no me ha dado resultado que buscaba.

El TXT realmente es un subtitulo SRT, solo necesito cambiar una palabra (o algunas) pongo un ejm: (subtitulo .SRT en archivo .TXT)

1
00:00:01,550 --> 00:00:04,420
vinieron los dos

2
00:00:04,710 --> 00:00:07,120
llegaron dos personas

3
00:00:07,120 --> 00:00:08,680
varios modos de llegar

4
00:00:08,680 --> 00:00:12,010
dos personas salieron

5
00:00:13,120 --> 00:00:14,680
calcularon doscientos

Quería (por ejm,) poner en mayúscula la palabra dos, o cambiarla por el digito 02, pero en este ejemplo no lo hace correctamente.

Incluso he probado en CMD Batch y en VBScript, y este último me ha dado algún resultado positivo, aunque cambia TODAS las palabras que contienen dos, incluyendo doscientos.....

Set FSO     = CreateObject("Scripting.FileSystemObject")
OldTextFile = ".\temp.txt"
NewTextFile = ".\1.txt"
ReplaceFrom = ("dos")
ReplaceTo   = ("DOS")
 
FSO.CreateTextFile(NewTextFile, 2). _
   Write(Replace(FSO.OpenTextFile(OldTextFile, 1).ReadAll(), _
              ReplaceFrom, ReplaceTo, 1, -1, vbTextCompare))


Algo que se me ocurre en este código, es que:
ReplaceTo   = ("DOS")
sea tal cual, pero añadir, que si hay algún carácter antes o después de esta palabra a modificar, que no lo haga, pero no encuentro la manera de hacerlo con comodines.

Aunque soy mas de CMD, puedo empezar a usar VBS si fuera necesario, pero mis conocimientos son muy limitados en VBS, me defiendo un poco más en comandos CMD, pero no me han dado buenos resultados por el código de tiempo del subtitulo (me cambia -->)

Muchas gracias por vuestra ayuda de antemano, saludos.


« Última modificación: 8 Agosto 2022, 17:00 pm por VTRPE » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Cambiar una o varias palabras dentro de un TXT
« Respuesta #1 en: 8 Agosto 2022, 17:26 pm »

Algo que se me ocurre en este código, es que:
ReplaceTo   = ("DOS")
sea tal cual, pero añadir, que si hay algún carácter antes o después de esta palabra a modificar, que no lo haga, pero no encuentro la manera de hacerlo con comodines.

Hola!

Puedes probar cambiando:

Código
  1. ReplaceFrom = ("dos")
  2. ReplaceTo   = ("DOS")
  3.  

por

Código
  1. ReplaceFrom = (" dos ")
  2. ReplaceTo   = (" DOS ")
  3.  

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

VTRPE

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Cambiar una o varias palabras dentro de un TXT
« Respuesta #2 en: 8 Agosto 2022, 17:40 pm »

Muchas gracias, pero ya lo probé, en el ejm no funciona en la primera línea "vinieron los dos" Porque después de la última palabra, no hay espacio, es el final de la oración.

Al igual que, tampoco funcionaría en la cuarta línea del ejm. Porque empieza por "dos" sin espacio antes.....

El archivo de subtítulo SRT es de 3 horas de duración, por eso necesito hacerlo con un código, porque de forma manual es imposible.

No sé si se podrá indicar algún comodín o algo, para que, al encontrar un caracter cualquiera antes o después de "dos" no aplique la modificación. Al menos a mi, no se me ocurre otra forma.
« Última modificación: 8 Agosto 2022, 17:59 pm por VTRPE » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Cambiar una o varias palabras dentro de un TXT
« Respuesta #3 en: 8 Agosto 2022, 19:14 pm »

Hola!

Prueba con el siguiente código:
Código
  1. Set FSO     = CreateObject("Scripting.FileSystemObject")
  2. OldTextFile = ".\temp.txt"
  3. NewTextFile = ".\1.txt"
  4. Set regEx = New RegExp
  5. regEx.IgnoreCase = True
  6. regEx.Global = True
  7. regEx.MultiLine = True
  8. content = FSO.OpenTextFile(OldTextFile, 1).ReadAll()
  9.  
  10. ReplaceTo = "DOS"
  11. regEx.Pattern = "\b(dos)\b"
  12. content = regEx.Replace(content, ReplaceTo)
  13. FSO.CreateTextFile(NewTextFile, 2).Write(content)
  14.  

Más info: https://www.tutorialspoint.com/vbscript/vbscript_reg_expressions.htm

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

VTRPE

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Cambiar una o varias palabras dentro de un TXT
« Respuesta #4 en: 8 Agosto 2022, 19:41 pm »

Si señor, ahora sí.
Mil gracias MCKSys Argentina

¿Hay alguna forma de incluir varios cambios de palabras a la vez?

La única que encontré es:

Set FSO     = CreateObject("Scripting.FileSystemObject")
OldTextFile = ".\temp.txt"
NewTextFile = ".\1.txt"
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.MultiLine = True
content = FSO.OpenTextFile(OldTextFile, 1).ReadAll()
 
regEx.Pattern = "\b(dos)\b"
ReplaceTo = "DOS"

content = regEx.Replace(content, ReplaceTo)

regEx.Pattern = "\b(personasl)\b"
ReplaceTo = "PERSONAS"

content = regEx.Replace(content, ReplaceTo)
FSO.CreateTextFile(NewTextFile, 2).Write(content)

Saludos.
« Última modificación: 8 Agosto 2022, 19:48 pm por VTRPE » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.518


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Cambiar una o varias palabras dentro de un TXT
« Respuesta #5 en: 8 Agosto 2022, 20:01 pm »

¿Hay alguna forma de incluir varios cambios de palabras a la vez?

Hola!

Puedes hacer un archivo que contenga lineas que sean: regexp, separador, cadena de reemplazo.
Luego lo lees linea x linea en un bucle y vas aplicando los replace x cada linea.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

VTRPE

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Cambiar una o varias palabras dentro de un TXT
« Respuesta #6 en: 8 Agosto 2022, 22:57 pm »

Uff, lo he intentado nuevamente, pero no he sido capaz.

Hace unos días intenté con un segundo archivo llamar al primero, con estas soluciones similares:

https://www.iteramos.com/pregunta/3152/como-se-puede-buscar-y-reemplazar-texto-en-un-archivo-utilizando-el-entorno-de-linea-de-comandos-de-windows

Y con:
https://social.msdn.microsoft.com/Forums/es-ES/cd3247b5-e4e7-4646-a3f8-1580617fe663/como-hago-un-scrip-vbs-para-cambiar-palabras-por-otra-de-un-archivo-de-texto?forum=vbes

Pero como no sé usar los argumentos ni armarlo para que funcione, me salen errores por todos lados, al menos en VBScript me cuesta un poco reaprender.

Igualmente, ponle un marcador muy grande a tu respuesta anterior, porque en ningún lado encontré algo similar que realmente me ayude con esto.

Muchas gracias por compartir tu tiempo y conocimientos, un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Seleccionar con explode varias palabras
PHP
dimitrix 2 2,438 Último mensaje 20 Junio 2012, 14:08 pm
por dimitrix
identificar varias palabras en una oracion
Programación Visual Basic
asdexiva 6 3,370 Último mensaje 27 Noviembre 2014, 22:56 pm
por asdexiva
MOVIDO: identificar varias palabras en una oracion
Programación General
Eleкtro 0 1,697 Último mensaje 26 Noviembre 2014, 19:33 pm
por Eleкtro
Ayuda con varias palabras en un string
Programación C/C++
kur79 6 2,643 Último mensaje 11 Septiembre 2015, 11:16 am
por ivancea96
mofificacion de palabras dentro de un XML
Scripting
rralcalde 0 1,920 Último mensaje 5 Marzo 2021, 13:08 pm
por rralcalde
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines