Números ascendentes cada x líneas y marcas de tiempo de modificación por lotes para el archivo .srt


1

He estado luchando para convertir un archivo en el siguiente formato

0:01:00.340 --> 0:01:01.380
***subtitle text***

0:01:01.380 --> 0:01:02.390
***subtitle text***

en formato estándar .srt, es decir:

1
0:01:00,320 --> 0:01:01,360
***subtitle text***

2    
0:01:01,360 --> 0:01:02,320
***subtitle text***

Saludos de antemano!

EDITAR: eliminé cosas sobre mi progreso antes de la respuesta de LotPing.


1
Por favor, no cruce los postes: stackoverflow.com/q/49929871/372239
— Toto

Disculpas, por primera vez pidiendo y presionando por tiempo. Si la publicación cruzada va en contra de las reglas, estaré más que feliz de eliminar una de las dos preguntas
— unironicScriptKiddy

Otra publicación ha sido eliminada
— unironicScriptKiddy

Respuestas:


2

Mi editor favorito Textpad puede hacer esto, de lo contrario necesitará un vbscript o Powershell.

enter image description here

Editar El RegEx se hizo más complejo con 3 grupos que capturan las regiones alrededor de los puntos / comas

Buscar: ^(\d{1,2}:\d{2}:\d{2})\.(\d{3}[-> ]+\d{1,2}:\d{2}:\d{2})\.(\d{3})
Reemplazar: \i\n$1,$2,$3

Lo que hace el RegEx es:

  • buscar un h:mm:ss patrón donde \d representa un dígito y {1,2} es un cuantificador, es decir, una o dos apariciones. {2} Es sólo dos veces, etc.
  • [-> ]+ Es una clase de cualquiera de los caracteres dentro del [ ] el siguiente cuantificador + significa al menos uno pero el mayor número posible de caracteres de clase.
  • ^ anclado en linea comienza y
  • (grupos) esto
  • seguido de un punto literal

Esto es reemplazado por

  • la \i incremento especial para TextPad
  • una \n nueva línea
  • y los agrupados $1 patrón también conocido como tiempo
  • y una coma literal.

Una fuente valiosa para RegEx es Regular-Expressions.info
y para probar de forma interactiva un uso RegEx o RE RegEx101.com


El RE anterior en RegEx101.com sin el \i -característica


Interesante, ¿así que también pudiste cambiar las comillas completas a comas? Lo copiaré y lo pegaré en notepad ++ 's find & amp; Reemplace y vea si ayuda. Además, ¿te importa explicar rápidamente lo que están haciendo tus operadores ^, \ d, \ i y $ 1? Aclamaciones
— unironicScriptKiddy

No, no lo hice, pero eso no es problema para atraparlo con el RE. Pero lo siento npp no ​​soporta el \i reemplazo de incremento. Voy a actualizar la imagen.
— LotPings

Gracias por la actualización, mencionando que RegEx ha hecho esto mucho más fácil de investigar. Al copiar en su expresión en TextPad 8 se actualiza la primera coma h: mm: ss, sin embargo, la segunda marca de tiempo no se actualiza (la que está después de "- & gt;")
— unironicScriptKiddy

Ver el RegEx actualizado y el reemplazo
— LotPings

¡Perfecto! Marcado como contestado, muchas gracias. ¿Te importa explicar la parte "\ d {3} [- & gt;] +" de la expresión? Entiendo todo lo demás ahora, cosas muy interesantes.
— unironicScriptKiddy

0

Para una solución de línea de comandos, usaría JREPL.BAT - una utilidad de expresión regular de script puro (JScript / batch) que se ejecuta en cualquier máquina Windows desde XP en adelante sin la necesidad de ningún archivo exe de terceros.

Los siguientes usos. ^ Continuación de la línea para evitar el desplazamiento, pero se podría poner todo en una línea.

jrepl "^(\d+:\d\d:\d\d)\.(\d{3} --> \d+:\d\d:\d\d)\.(\d{3})"^
      "$txt=++n+'\r\n'+$1+','+$2+','+$3" /jq /jbeg "var n=0" /f test.txt /o -

Use CALL JREPL si coloca el comando dentro de un script por lotes.


¿Cómo se está insertando este número incremental?
— Toto

@Toto: No fue así, me faltó por completo ese requisito. He actualizado la respuesta para poner en los números en aumento.
— dbenham
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.