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.

unironicScriptKiddy
fuente
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

LotPings
fuente
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.

dbenham
fuente
¿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