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
| | |-+  QPF to Chapter file
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: QPF to Chapter file  (Leído 8,620 veces)
ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
QPF to Chapter file
« en: 12 Julio 2013, 05:48 am »

Hola buenas, estaba intentando hacer un conversor de archivos qpf files (que es un txt con otra extensión) para calcular una serie de codigos de tiempo en base a un numero prefijado de 23.976 frames por segundo.

El caso es que nada mas empezar no me ejecuta la tarea mas basica que es motrar en la consola las lineas del qpf. El código es este:

Código
  1. @echo off
  2. SetLocal EnableDelayEdexpansion
  3.  
  4. @ECHO OFF
  5. FOR /F "tokens=*" %%A IN ("C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.txt") DO CALL:Tratar "%%A"
  6. GOTO:EOF
  7.  
  8. :Tratar
  9.   SET Reg=%~1
  10.   ECHO %Reg%
  11.   GOTO:EOF
  12.  
  13. pause&exit

El formato de un archivo qpf es:

Código:
0 K -1
2616 K -1
16072 K -1
16384 K -1
32440 K -1
34768 K -1

Entonces necesito coger cada numero, tratarlo durante el proceso del for, calcular el codigo de tiempo, e ir almacenandolo en otro txt. El algoritmo sería algo como:

Codigo de tiempo=2616*0,0417083sg=109,1089128sg/60=1,81848188=1min+0,81848188

resto_tiempo=0,81848188*60=49,1089128sg=49sg+109ms

total 1min49sg109ms-->00:01:49.109

Tras calcular el primer resultado tendria que discenir si x>=3600 entonces el resultado que da seria en horas, si x>=60 daria en minutos, x<60 en segundos.

Vamos, pero que me gustaria saber pq no me lista los numeros. Tengo windows8, por si afecta en algo.


« Última modificación: 12 Julio 2013, 09:30 am por EleKtro H@cker » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: QPF to Chapter file
« Respuesta #1 en: 12 Julio 2013, 09:43 am »

me gustaria saber pq no me lista los numeros.

No estás usando comillas en el comando agrupado, no le estás indicando al FOR que se trata de un archivo, en lugar de eso estás usando comillas dobles así que estás leyendo interpretando un String "...\10. QPFILE_NAME.txt", no el contenido del archivo.

Hay dos formas de hacerlo, una es usando el parámetro "usebackq" del FOR y usar sólo comillas, y la otra es usando la sintaxis correcta del For agrupando un comando con comillas: ...In ('Type "archivo"') Do..., bueno, aquí tienes la sintaxis:

Citar
Código:
 FOR /F ["options"] %%parameter IN ('command_to_process') DO command

Citar
Código:
      usebackq     Use the alternate quoting style:                        
                   - Use double quotes for long file names in "filenameset".
                   - Use single quotes for 'Text string to process'
                   - Use back quotes for `command_to_process`


Código
  1. @echo off
  2. SetLocal EnableDelayEdexpansion
  3.  
  4. FOR /F "usebackq delims=" %%A IN (
  5. "C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.txt"
  6. ) DO (
  7. SET "Reg=%%A"
  8. ECHO !Reg!
  9. )
  10.  
  11. Pause&Exit

Saludos


« Última modificación: 12 Julio 2013, 13:27 pm por EleKtro H@cker » En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: QPF to Chapter file
« Respuesta #2 en: 12 Julio 2013, 13:19 pm »

Vaya, que facil parece y que dolor de cabeza tenia ayer con esto. Gracias.

EDITO: Tengo este codigo pero se cierra el msdos y no puedo ver nada, aparentemente se ejecuta sin fallos.


EDITO2: Solucionado ^^

Código
  1. @echo off
  2. SetLocal EnableDelayEdexpansion
  3.  
  4. @ECHO OFF
  5. FOR /F "usebackq tokens=1" %%A IN (
  6. "C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.txt"
  7. ) DO (
  8. call:timecode %%A
  9.  
  10. )
  11. goto:finish
  12.  
  13. :timecode
  14. SET /a Reg="%1"
  15. echo %reg%
  16. goto:eof
  17.  
  18. :finish
  19. pause&exit
« Última modificación: 12 Julio 2013, 13:58 pm por ovichan » En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: QPF to Chapter file
« Respuesta #3 en: 12 Julio 2013, 17:39 pm »

Creo que la sintaxis es correcta pero me indica que le falta el operador WTF!!

Código
  1. @echo off
  2. Title QPFile to Chapter´s Timecodes
  3.  
  4. @ECHO OFF
  5. For /f "usebackq tokens=1" %%A IN (
  6. "C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.txt"
  7. ) DO (
  8. call:timecode %%A
  9.  
  10. )
  11. Goto:finish
  12.  
  13. :timecode
  14. Set /a reg=%1
  15. Echo %reg%
  16. set /a const=0.0417083
  17. set /a reg=%reg%*%const%
  18. Echo %reg%
  19.  
  20. ::Mensaje de error
  21. IF %reg% GEQ 216000 (color 4E & echo Error. Un video no puede tener una duracion continua igual a un o mas días.)
  22.  
  23. ::Calculo de timecodes partiendo de horas
  24. IF %reg% GEQ 3600 (echo hola 1)
  25.  
  26. ::Calculo de timecodes partiendo de minutos
  27. IF %reg% LSS 3600 (IF %reg% GEQ 60 (echo hola 2))
  28.  
  29. ::Calculo de timecodes partiendo de segundos.
  30. IF %reg% LSS 60 (IF %reg% GEQ 0 (echo hola 3))
  31. Goto:eof
  32.  
  33. :finish
  34. Pause&exit

¿Algo está mal? ¿Acaso no se puede operar con numeros decimales?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: QPF to Chapter file
« Respuesta #4 en: 12 Julio 2013, 18:07 pm »

¿Algo está mal? ¿Acaso no se puede operar con numeros decimales?

Exacto, ese es el problema, Batch no soporta operaciones con decimales.

Aunque se pueden llegar a hacer, pero es un jaleo de código y porsupuesto no es algo "nativo" que digamos, diréctamente te recomiendo cualquier otro lenguaje.

Si no quieres depender de tener un intérprete instalado en el PC entonces te iría bien usar VBScript, javascript, O Powershell.

Saludos!
« Última modificación: 12 Julio 2013, 18:10 pm por EleKtro H@cker » En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: QPF to Chapter file
« Respuesta #5 en: 12 Julio 2013, 18:08 pm »

Jeje me lo habia supuesto, estoy aprendiendo ahora a manejar vbscript, me suena de cuando en la facultad toque por encima el visualbasic... pero vamos que fue para importar tablas de excel y hace siglos de eso.... me mueroooooo  :silbar:
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: QPF to Chapter file
« Respuesta #6 en: 12 Julio 2013, 18:19 pm »

Jeje me lo habia supuesto, estoy aprendiendo ahora a manejar vbscript, me suena de cuando en la facultad toque por encima el visualbasic... pero vamos que fue para importar tablas de excel y hace siglos de eso.... me mueroooooo  :silbar:

No te preocupes, para lo que necesitas no tienes que aprender casi nada, sólo a usar los operadores aritméticos y escribir una rchivo de texto.

Ejemplo:

Código
  1. num1 = 0.5
  2. num2 = 2
  3. Result = (num1 * num2)
  4.  
  5. Wscript.Echo(Result)
  6.  
  7. Set textfile = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\test.txt", 8, true)
  8. textfile.Write(Result & vbCrLf) : textfile.Close
  9.  
  10. Wscript.Quit(0)

Saludos
« Última modificación: 12 Julio 2013, 18:23 pm por EleKtro H@cker » En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: QPF to Chapter file
« Respuesta #7 en: 12 Julio 2013, 18:21 pm »

Pues menos mal porque estaba haciendo esto y no me salia  :-[

Código
  1. Dim valor
  2. Valor1 = 0.0417083
  3. Valor2=2616
  4. valor=valor1*valor2
  5.  
  6. If  valor < 10 then
  7.    "El valor es MENOR a diez "
  8. Else
  9.   document.write( "El valor es MAYOR a diez " & valor)
  10. End if
« Última modificación: 12 Julio 2013, 18:23 pm por ovichan » En línea

ovichan

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: QPF to Chapter file
« Respuesta #8 en: 12 Julio 2013, 18:42 pm »

Se puede hacer un filtrado por tokens de un for de dos, en vbs??
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: QPF to Chapter file
« Respuesta #9 en: 12 Julio 2013, 18:50 pm »

Se puede hacer un filtrado por tokens de un for de dos, en vbs??

Código
  1. str = "a-b-c-d-e-f"
  2.  
  3. For each token in split(str, "-")
  4.    wscript.echo(token)
  5. next

Saludos
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
file cue
Juegos y Consolas
black fox 3 2,204 Último mensaje 22 Febrero 2004, 22:01 pm
por Songoku
Max Payne : part 3 chapter 5
Juegos y Consolas
vicecity 2 1,857 Último mensaje 5 Marzo 2004, 01:48 am
por vicecity
Problemas con el Objeto File - Files del Objeto FSO (File System Object)
Programación Visual Basic
cero_kill_byte 1 2,592 Último mensaje 19 Octubre 2005, 02:36 am
por la caca
FABLE-THE LOST CHAPTER
Juegos y Consolas
shek 1 1,453 Último mensaje 1 Abril 2006, 14:49 pm
por panaka
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines