Título: Cambiar una o varias palabras dentro de un TXT Publicado por: VTRPE 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. Título: Re: Cambiar una o varias palabras dentro de un TXT Publicado por: MCKSys Argentina 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
por Código
Saludos! Título: Re: Cambiar una o varias palabras dentro de un TXT Publicado por: VTRPE 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. Título: Re: Cambiar una o varias palabras dentro de un TXT Publicado por: MCKSys Argentina en 8 Agosto 2022, 19:14 pm Hola!
Prueba con el siguiente código: Código
Más info: https://www.tutorialspoint.com/vbscript/vbscript_reg_expressions.htm (https://www.tutorialspoint.com/vbscript/vbscript_reg_expressions.htm) Saludos! Título: Re: Cambiar una o varias palabras dentro de un TXT Publicado por: VTRPE 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. Título: Re: Cambiar una o varias palabras dentro de un TXT Publicado por: MCKSys Argentina 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! Título: Re: Cambiar una o varias palabras dentro de un TXT Publicado por: VTRPE 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. |