|
8571
|
Programación / Scripting / Re: QPF to Chapter file
|
en: 13 Julio 2013, 04:01 am
|
vbs me redondea automaticamente los valores de los resultados inmediatos a su numero entero superior Es lo que hace la función "Cint", usa "Int" en su lugar. Por cierto, podrías evitar el uso de if's anidados, no lo soporto, con lo bonito y organizado que queda un Case: ' Variables Const constante = 0.0417083 ' Do until qpfile.AtEndOfStream set qpfile=createobject("scripting.filesystemobject").Opentextfile("C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.qpf",1) qpfile.readline() 'Filtrar linea, para quedarnos con el numero del frame For each token in split(qpfile.readline()) tratar(token) exit For Next ' Loop Wscript.quit 'Subrutina para transformar numero entero en timestamp Sub Tratar(Frame) 'Establecemos criterio de comparación calculo = (Frame * constante) p_entera = int(calculo) Select Case p_entera Case p_entera >= 216000 'Mensaje de error hora=normalizar(calculo) msgbox("Error. Un video no puede tener una duracion continua igual a un o mas días.") Case p_entera >= 3600 'Calculo de timecodes partiendo de horas msgbox("hola1") Case p_entera < 3600 AND p_entera >= 60 ' Calculo de timecodes partiendo de minutos min=calculo\60 seg=calculo mod 60 ms=round(((((calculo/60)-min)*60)-seg),3)*1000 msgbox(min & " min. " & seg & " seg. " & ms & " ms. ") Case p_entera < 60 AND p_entera >= 0 'Calculo de timecodes partiendo de segundos msgbox("hola3") Case ELSE msgbox("Error. No pueden existir valores negativos.") End select End Sub
PD: No lo he testeado, pero ya te haces una idea. Saludos!
|
|
|
8572
|
Programación / Scripting / Re: QPF to Chapter file
|
en: 13 Julio 2013, 03:41 am
|
¿Más que un procedimiento, no debería ser una función? Vamos a ver, no veo que intentes retornar ningún valor ni que tengas planeado hacerlo en un futuro, tal y como lo estás haciendo vas bien, aunque yo lo haría todo dentro del For, pero usa un proc si sigues así ...usa una función si quieres tratar los valores fuera del bloque de la subrutina, en el Ciclo del For. Óbviamente si deseas "tratar" las variables del proc fuera del proc primero tienes que declararlas... dim hora sub blabla hora = X end sub msgbox(hora)
saludos
|
|
|
8573
|
Programación / Scripting / Re: QPF to Chapter file
|
en: 13 Julio 2013, 02:39 am
|
Si el problema es que necesitas saltar la primera línea del archivo pues ejecuta esta instrucción 2 veces: ... qpfile.readline() : linea=qpfile.readline() ' leemos dos lineas, pero nos quedamos con la segunda. For each token in split(linea, " ") ... ...
EDITO: Si no es eso pues da más detalles... pero ten en cuenta antes de preguntar que puedes usar condicionales... if not "a" = "A" then : Wscript.Echo "no" : end if if Instr("a", "a") then : Wscript.Echo "si" : end if
Saludos
|
|
|
8574
|
Sistemas Operativos / Windows / Re: "Enviar a "
|
en: 12 Julio 2013, 21:30 pm
|
Como te ha dicho drvy siempre se copian, y NO SE PUEDE MODIFICAR. Aquí tienes una alternativa que hice en Ruby: [RUBY] (APORTE) MoveIt (Complemento para el menú SendTo de Windows)Es bien fácil de usar y en el post tienes las instrucciones, la idea fue modificar la ruta en las propiedades de los accesos directos para ejecutar mi aplicación y pasarle como argumento dicha carpeta, y así trabajar con esa carpeta (mover archivos), por esa razón no es necesario crear nuevas entradas como dijo drvy, ni nada parecido, símplemente se ejecuta la aplicación y mueve los archivos, aquí tienes unas imágenes: PD: Compila el script para que no te muestre la ventana del intérprete de Ruby y listo, todo será "oculto" . Saludos.
|
|
|
8575
|
Programación / Scripting / Re: QPF to Chapter file
|
en: 12 Julio 2013, 20:32 pm
|
¿Se puede hacer como en dos, crear una etiqueta (procedimiento) desde el interior del bucle?? Cualquier cosa que haga Batch se puede hacer en otro lenguaje, y mejor xD : Set TextFile = createobject("scripting.filesystemobject").Opentextfile("C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.qpf",1) Const Constant = 0.0417083 Do Until TextFile.AtEndOfStream For Each Token in split(TextFile.readline()) ' Te hago saber que por defecto un token es separado por un "espacio". Tratar(Token) Next Loop Wscript.quit Sub Tratar(Token) MsgBox(Token) End Sub
|
|
|
8576
|
Programación / Scripting / Re: QPF to Chapter file
|
en: 12 Julio 2013, 19:37 pm
|
set qpfile=createobject("scripting.filesystemobject").Opentextfile("C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.qpf",1) Do until qpfile.AtEndOfStream linea=qpfile.readline() ' o msgbox(qpfile.readline()) Loop
saludos
|
|
|
8577
|
Programación / Scripting / Re: QPF to Chapter file
|
en: 12 Julio 2013, 18:50 pm
|
Se puede hacer un filtrado por tokens de un for de dos, en vbs?? str = "a-b-c-d-e-f" For each token in split(str, "-") wscript.echo(token) next
Saludos
|
|
|
8578
|
Programación / Scripting / Re: QPF to Chapter file
|
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 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: num1 = 0.5 num2 = 2 Result = (num1 * num2) Wscript.Echo(Result) Set textfile = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\test.txt", 8, true) textfile.Write(Result & vbCrLf) : textfile.Close Wscript.Quit(0)
Saludos
|
|
|
8579
|
Programación / Scripting / Re: QPF to Chapter file
|
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!
|
|
|
8580
|
Programación / Scripting / Re: QPF to Chapter file
|
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: FOR /F ["options"] %%parameter IN ('command_to_process') DO command 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` FOR /F "usebackq delims=" %%A IN ( "C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.txt" )
Saludos
|
|
|
|
|
|
|