|
||
|
#21
|
||||
|
||||
|
Tienes que comparar DOS archivos para saber si son iguales (si son idénticos, borras uno de ellos; si no lo son, entonces no haces nada), y luego tienes que comparar OTROS dos archivos, y así tienes que comparar (de DOS en DOS) todos los archivos. Por simplificar supongamos que la carpeta tiene solo diez archivos. Has de comparar el archivo número 1 con cada uno de los otros 9; luego has de comparar el archivo 2 con cada uno de los otros 8 restantes; luego has de comparar el archivo 3 con cada uno los otros 7 restantes, etc... hasta comparar el archivo 8 con el 9, y ahí has terminado las comparaciones. De este modo, teniendo solo 10 archivos se necesitan hacer 45 compraraciones. Ya te puedes imaginar que las cifras son proporcionalmente mayores si tienes cien archivos o más. Como puedes entender, necesitas hacer eso mediante bucles. En realidad son dos bucles anidados. El primer bucle elige un archivo cada vez, es el primer archivo de la comparaciones (para compararlo con archivos siguientes). El segundo bucle elige el segundo archivo de la comparación. Para cada comparación hay que averiguar si los archivos son idénticos. En caso afirmativo hay que borrar uno de los dos archivos que han sido comparados. Lo que tú has puesto Comando: rm /storage/sdcard1/pruebas/*.jpg si if %Duplicados coincide on Es una barbaridado porque borraría todos los archivos JPG de la carpeta en el caso de que la comparación hubiera indicado que DOS archivos son iguales. O sea que la acción de borrar debe estar DENTRO de los dos bucles que te he indicado, y debe afectar solamente a uno de los dos archivos que han sido comparados. El asunto es realmente muy ambicioso y complejo, no se resuelve fácilmente. Pero es totalmente posible. Otra cosa es que puede ser desproporcionado si lo queremos hacer con todos los archivos de todas las carpetas. Teniendo miles de archivos en la tarjeta SD, si los quieres comparar todos es posible que la tarea necesite días o semanas para completarse.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
| Gracias de parte de: | ||
|
|
|
#22
|
||||
|
||||
|
Perfil: Borrado (4)
Hora: Desde 04:00 Estado: Cargando [ Origen:Cargador ] Entrada: Pruebas (5) A1: Establecer variable [ Nombre:%Archivo1 A:/storage/sdcard1/prueba1.jpg Calcular:Apagado Añadir:Apagado ] A2: Establecer variable [ Nombre:%archivo2 A: /storage/sdcard1/prueba2.jpg Calcular:Apagado Añadir:Apagado ] A3: Establecer variable [ Nombre:%archivo3 A: /storage/sdcard1/prueba3.jpg Calcular:Apagado Añadir:Apagado ] A4: Establecer variable [ Nombre:%Tictac A:%TIMEMS Calcular:Apagado Añadir:Apagado ] A5: For [ Variable:%Num Ítems:1:50 ] A6: Ejecutar consola [ Comando:md5 %Archivo1 Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En:%Salida Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ] A7: Ejecutar consola [ Comando:cmp %archivo1 %archivo2 Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En:%Salida Almacenar Errores En: Almacenar Resultado en: Continuar Tarea Tras Error:Encendido ] A8: End For A9: Establecer variable [ Nombre:%Tictac A:%TIMEMS-%Tictac Calcular:Encendido Añadir:Apagado ] A10: Flash [ Texto:%Tictac Largo:Apagado ] Aquí está, aunque A6 me da este error: 21.05.46/Variables doreplresult: |md5 %Archivo1| -> |md5 /storage/sdcard1/prueba1.jpg| 21.05.46/Variables doreplresult: |md5 %Archivo1| -> |md5 /storage/sdcard1/prueba1.jpg| 21.05.46/E Ejecutar consola: %Salida -> %Salida 21.05.46/E Ejecutar consola: -> 21.05.46/E Ejecutar consola: -> 21.05.46/Shell runBackground md5 /storage/sdcard1/prueba1.jpg root: true timeout: -1 21.05.46/Shell start process-thread ID 4162 21.05.46/E add wait type Shell2 time 2147483647 21.05.46/E add wait type Shell2 done Voy a revisar todo. Me he tomado la libertad o licencia de poner a las variables la primera letra en mayúsculas, puesto que son variables locales nuestras. Creo que hecho bien. Madre mía, para llegar a tu suela de tus zapatos me queda un trecho! He flipado colorines!
|
|
#23
|
||||
|
||||
|
Lo esperaba. Por eso la acción tiene puesta la marca de "Continuar Tarea Tras Erro". ¿Y los tiempos de ejecución?
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#24
|
||||
|
||||
![]()
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#25
|
||||
|
||||
|
Caravantes, creo que tu planteamiento es sensato. Esto me recuerda a las permutaciones, es decir, qué probabilidades hay de que al tirar un dado salga el 5? Si el dado tiene 6 lados, para calcular esa probabilidad se ha de multiplicar 6x5x4x3x2x1 lo que arroja un resultado de 720 probabilidades de que salga cualquier número del dado.
Digo todo esto porque lo que ha comentado Caravantes me ha recordado todo esto. Quizás no venga al caso, y pero por lo menos, refrescamos memoria. ![]() Entonces, vamos a limitarnos a archivos .jpg del WhatsApp, porque comparar todos los archivos puede llevar mucho tiempo. Y luego, veremos adónde nos llevan las conclusiones. Entonces, sólo tendríamos que comparar las fotos de storage/sdcard1/whatsapp/media/whatsapp images/sent/*.jpg con por ejemplo, storage/sdcard1/DCIM/camera Todo sea como bien dice Caravantes, simplificar la tarea. Por cierto WillyWeb, la tarea me sigue dando error aún después de subsanar mi error. Vamos a frenar y a replantear la cuestión. Saludos!
|
|
#26
|
||||
|
||||
|
Caravantes es un optimista nato.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) Última edición por WillyWeb Día 21/02/16 a las 22:12:38. |
|
#27
|
||||
|
||||
|
Creo que no va a funcionar. Whatsapp le hace un tratamiento especial a las imágenes, aumentando su compresión y reduciendo su resolución, todo ello para disminuir el número de bytes de la imagen y así poder transmitirla de forma más rápida. Haz una foto con la cámara y luego la envías por Whatsapp, verás que el archivo de Whatsapp es mucho más pequeño que el archivo ubicado en /DCIM/camera. Comparando por tamaño y/o por contenido no van a coincidir, aunque visualmente sigan pareciendo la misma imagen.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#28
|
||||
|
||||
|
Vas orientado, pero en realidad no son permutaciones sino combinaciones. Son combinaciones de m elementos tomados de n en n. En nuestro caso, la primera cifra (m) es el número total de archivos, y la segunda cifra (n) es un 2 porque los combinamos de dos en dos (cada vez comparamos DOS archivos, el uno con respecto al otro).
Por ejemplo, para 1000 archivos, la fórmula es C(1000,2) y el resultado es 499500. O sea que son casi medio millón de combinaciones, que en nuestro caso representan casi medio millón de comparaciones sucesivas para averiguar si en entre esos mil archivos hay algunos repetidos. En la siguiente URL hay una calculadora de combinaciones para poner cualquier cifra y obtener el resultado de forma inmediata. http://www.estadisticaparatodos.es/s...atorio2.html#7
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#29
|
||||
|
||||
|
De todas formas, yo tengo un cacao mental impresionante, pero por lo menos, vamos dilucidando cosas. No había caído en lo que comentas, que no es la misma compresión de una foto hecha con la cámara que una mandada por WhatsApp. Es una excelente observación por tu parte. WillyWeb se lo está pasando pipa con este desafío.
|
|
#30
|
||||
|
||||
|
Por ejemplo, para 1000 archivos, la fórmula es C(1000,2) y el resultado es 499500.
O sea que son casi medio millón de combinaciones, que en nuestro caso representan casi medio millón de comparaciones sucesivas para averiguar si en entre esos mil archivos hay algunos repetidos. ![]()
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#31
|
||||
|
||||
|
...Haz una foto con la cámara y luego la envías por Whatsapp, verás que el archivo de Whatsapp es mucho más pequeño que el archivo ubicado en /DCIM/camera. Comparando por tamaño y/o por contenido no van a coincidir, aunque visualmente sigan pareciendo la misma imagen.
![]()
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
|
#32
|
||||
|
||||
|
Lo tenía todo en la cabeza y por fin he sacado un rato para escribirlo en Tasker.
![]() Me falta por añadir la verificación en binario (todavía no me habéis dicho qué sistema pensáis que es más rápido, cmp o md5) pero el resto ya es totalmente funcional. Lo he probado en dos carpeta de mi WhastApp con "posibles" duplicados y han cantado por peteneras. ![]() Carpeta de imágenes recibidas 3700 archivos 80 posibles duplicados 79300 milisegundos (unos 80 segundos) Carpeta de imágenes enviadas 500 archivos 19 posibles duplicados 10500 milisegundos (unos 11 segundos) Tal y como ha explicado Caravantes, comparar cada archivo con el resto requiere una burrada de iteraciones. Exactamante... C(500,2)=124750 para la carpeta de 500 archivos C(3700,2)=6843150 para la carpeta de 3700 archivos Un bucle de 10000 iteraciones de Tasker, limpio, sin nada dentro, sólo el For y el EndFor me lleva unos 19 segundos, así que uno de 124750 iteraciones (el de los 500 archivos) me llevaría mucho más de 200 segundos. Y eso sólo para pasar por todas las combinaciones posibles, sin hacer nada más. Esto marcha
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) Última edición por WillyWeb Día 22/02/16 a las 13:22:19. |
|
#33
|
||||
|
||||
|
Puesto que todavía estamos en la fase inicial del asunto, repito que me conformaría con empezar comparando los archivos de una sola carpeta. Para empezar eligiendo alguna en concreto, me parece muy oportuno usar cualquiera de las que tú has probado (WhatsApp/Media/Whatsapp Images o bien WhatsApp/Media/Whatsapp Images/Sent). Luego, quizá podamos extender el planteamiento para hacer la comparación entre cualesquiera pareja de archivos de dos carpetas (esas dos, u otras), o quizá incluso más de dos. Parece que tú, Willy, ya tienes bastante orientada la primera fase del asunto, así pues... cuando quieras nos muestras tu tarea, estamos deseando verla. Gracias.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#34
|
||||
|
||||
|
Pido disculpas. Esta mañana me "obligaron" a dejar el post justo cuando me disponía a explicar el "truco" que he utilizado. He intentado retomarlo esta tarde, pero no me dejan tranquilo (maldito teléfono). Cuando finalmente me he puesto al tema me ha llegado el aviso de un nuevo post (el tuyo Caravantes) y me he parado en seco para ver de qué se trataba (la verdad es que esperaba una bronca).
![]() En línea generales consiste en lo siguiente:
En una pasada se detectan y eliminan los archivos duplicados. Si la lista tiene 1000 archivos son necesarias 999 comparaciones en vez de 499500. ![]() Puesto que todavía estamos en la fase inicial del asunto, repito que me conformaría con empezar comparando los archivos de una sola carpeta. Para empezar eligiendo alguna en concreto, me parece muy oportuno usar cualquiera de las que tú has probado (WhatsApp/Media/Whatsapp Images o bien WhatsApp/Media/Whatsapp Images/Sent). Luego, quizá podamos extender el planteamiento para hacer la comparación entre cualesquiera pareja de archivos de dos carpetas (esas dos, u otras), o quizá incluso más de dos.
![]()
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
| Gracias de parte de: | ||
|
#35
|
||||
|
||||
|
Hola! Lo siento, hoy he tenido un día completo y ahora he podido relajarme un poco.
Yo lo estoy flipando.
|
|
#36
|
||||
|
||||
|
Cargas los nombre de los archivos en un array
Recorres todo el array para conseguir el tamaño de cada archivo Pones el tamaño del archivo por delante de su nombre de forma que en cada elemento del array quede bytes#nombre Ordenas el array alfabéticamente (recuerda que cada elemento del array está formado por la pareja bytes#nombre) ![]() A pesar de ello, veo probable que este truco acabe siendo muy ventajoso. La idea es muy ingeniosa y se puede buscar la mejor forma de explotarla bien para optimizar el rendimiento. Esto me recuerda algo reciente. Hace unos días, el compañero Cace0353 tenía una tarea Tasker que se demoraba demasiado (12 segundos) , pero luego pasó parte de las acciones a javascript y con eso consiguió reducir el tiempo de ejecución a la tercera parte (4 segundos). http://www.htcmania.com/showthread.php?t=631165&page=2 Creo que aquí estamos en un caso parecido. En realidad no creo que podamos evitar las 499500 comparaciones, pero tal vez podamos hacer la mayor parte del trabajo mediante atajos que mejoren la eficiencia. Por ejemplo, podemos (A) ordenar el array mediante un bucle de Tasker que compare cada pareja de elementos y los intercambie de posición si procede. Otra posibilidad es (B) grabar todo el array en un archivo de texto, de forma que cada elemento del array sería una línea del archivo; luego pedirle al sistema operativo que ordene el archivo (en lo que aparentemente sería una sola acción Sort, aunque en realidad Linux haga medio millón de comparaciones), y terminamos leyendo el archivo para cargar otra vez el array con la ordenación ya hecha. Sospecho que la opción B es mucho más eficiente que la A.
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
|
#37
|
||||
|
||||
|
Estás haciendo una pequeña trampa, al menos en lo conceptual. La ordenación ya implica comparar cada elemento del array (bytes#nombre) con todos los demás elementos del array. O sea que, si tienes 1000 archivos, la ordenación ya implica realizar 499500 comparaciones.
![]() Esto me recuerda algo reciente. Hace unos días, el compañero Cace0353 tenía una tarea Tasker que se demoraba demasiado (12 segundos), pero luego pasó parte de las acciones a javascript y con eso consiguió reducir el tiempo de ejecución a la tercera parte (4 segundos).
![]() Por ejemplo, podemos (A) ordenar el array mediante un bucle de Tasker que compare cada pareja de elementos y los intercambie de posición si procede. Otra posibilidad es (B) grabar todo el array en un archivo de texto, de forma que cada elemento del array sería una línea del archivo; luego pedirle al sistema operativo que ordene el archivo (en lo que aparentemente sería una sola acción Sort, aunque en realidad Linux haga medio millón de comparaciones), y terminamos leyendo el archivo para cargar otra vez el array con la ordenación ya hecha. Sospecho que la opción B es mucho más eficiente que la A.
![]() Esta tarea se puede optimizar (todavía más), pero no en la ordenación del array. El bucle que obtiene los tamaños de archivo y el que después compara los elementos consecutivos son objetivos mucho más interesantes ... estoy en ello.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
| Gracias de parte de: | ||
|
#38
|
||||
|
||||
|
Aquí os dejo la tarea que elimina archivos duplicados de cualquier carpeta y de cualquier tipo (siempre que la carpeta no requiera permisos especiales)...
![]() Código:
BorraDuplicados (666) A1: Establecer variable [ Nombre:%par1 A:/sdcard/tmp ] A2: Establecer variable [ Nombre:%par2 A:*.jpg/*.jpeg ] A3: Devolver [ Valor:PARX Detener:Encendido ] Si (if) [ %par1 No ajust. | %par2 No ajust. ] A4: Establecer variable [ Nombre:%tictac A:%TIMEMS ] A5: Listar archivos [ Directorio:%par1 Coincidir:%par2 Variable:%archivos Continuar Tarea Tras Error:Encendido ] A6: Establecer variable [ Nombre:%finchk A:%archivos(#) ] A7: Devolver [ Valor:VACIO Detener:Encendido ] Si (if) [ %finchk = 0 ] A8: For [ Variable:%chk Ítems:1:%finchk ] A9: Probar Archivo [ Tipo:Tamaño Datos:%archivos(%chk) Almacenar Resultado en:%bytes Usar Root:Apagado Continuar Tarea Tras Error:Encendido ] A10: Establecer variable [ Nombre:%archivos(%chk) A:<b>%bytes</b><a>%archivos(%chk)</a> Calcular:Apagado Añadir:Apagado ] A11: End For A12: Procesar Array [ Variable:%archivos Tipo:Orden Alfabético ] A13: Establecer variable [ Nombre:%filesbor A:0 ] A14: Establecer variable [ Nombre:%bytesbor A:0 ] A15: Restar de variable [ Nombre:%finchk Valor:1 ] A16: For [ Variable:%chk Ítems:1:%finchk ] A17: Establecer variable [ Nombre:%sigchk A:%chk+1 Calcular:Encendido ] A18: Establecer variable [ Nombre:%archivos A:%archivos(%chk) %archivos(%sigchk) ] A19: Buscar y Reemplazar Contenido de Variable [ Variable:%archivos Buscar:(?<=<b>).*?(?=</b>) Almacenar Coincidencias En:%bytes ] A20: Si (if) [ %bytes1 = %bytes2 ] A21: Buscar y Reemplazar Contenido de Variable [ Variable:%archivos Buscar:(?<=<a>).*?(?=</a>) Almacenar Coincidencias En:%file ] A22: Ejecutar consola [ Comando:cmp %file1 %file2 Almacenar Salida En:%salida Continuar Tarea Tras Error:Encendido ] A23: Si (if) [ %salida No ajust. ] A24: Sumar a variable [ Nombre:%filesbor Valor:1 ] A25: Sumar a variable [ Nombre:%bytesbor Valor:%bytes1 ] A26: Eliminar archivo [ Archivo:%file1 Continuar Tarea Tras Error:Encendido ] A27: Fin si (End if) A28: Fin si (End if) A29: End For A30: Establecer variable [ Nombre:%tictac A:%TIMEMS-%tictac Calcular:Encendido ] A31: Flash [ Texto:%archivos(#),%filesbor,%bytesbor,%tictac Largo:Encendido ] A32: Devolver [ Valor:%archivos(#),%filesbor,%bytesbor,%tictac Detener:Encendido ]
Lo de la pareja bytes#archivo al final ha quedado como <b>bytes</b><a>archivo</a>. Eso me ha permitido usar una RegExp en A19 y A21 que me saca los bytes y los nombres de archivo a comparar en dos parejas de variables (bytes1/bytes2 y file1/file2) de una tacada. El resto de acciones no creo que requieran muchas aclaraciones, pero si algo no se entiende aquí estoy. ![]() ... Tal como está se puede usar directamente en el UI de Tasker, aunque está pensada para ser usada como una subtarea a la que se pueda llamar con "Realizar tarea". Como supongo que os pondréis a probar os cuento lo que tenéis que hacer y lo que debería suceder...
Si la usáis como subtarea...
Por si alguien tiene dudas de cómo hacer la llamada a la subtarea... Código:
Prueba777 (777) A1: Realizar tarea [ Nombre:BorraDuplicados Prioridad:%priority Parámetro 1 (%par1):/sdcard/tmp Parámetro 2 (%par2):*.jpg/*.jpeg Devolver Valor de Variable:%resultado ] A2: Flash [ Texto:%resultado Largo:Apagado ]
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) |
| Los siguientes 3 usuarios han agradecido a WillyWeb su comentario: | ||
|
#39
|
||||
|
||||
![]() Sigo fascinado por la brillante idea de concatenar el tamaño y el nombre de cada archivo. Pero además, también estoy fascinado por el dominio de las distintas técnicas (arrays, expresiones regulares, etc) que son las que hacen que la tarea llegue a los niveles de la excelencia, tanto en planteamiento como en eficiencia (velocidad de ejecución). Chapó. ![]() Se me ocurren tres pequeñas mejoras. - Introducir al comienzo un comentario que explique lo que hace la tarea. - Meter una condición para distinguir cuándo funciona como subtarea (con parámetros recibidos) y cuándo funciona directamente (sin parámetros recibidos), sin necesidad de cambiar la tarea. - Introducir una variable %subtarea que puede tener valores 0/1 dependiendo de que funcione de un modo u otro. Esa variable podría utilizarse para presentar los resultados de la forma adecuada: si es una subtarea, se devuelve una variable a la tarea principal; si no funciona como subtarea, se muestran los resultados en un flash. Código:
A1: Destino (de goto) <Esta tarea elimina los posibles archivos duplicados de un directorio. Se puede usar como subtarea, poniendo en el parametro1 el directorio, y en el parametro2 el/los tipo(s) de archivos a procesar. La tarea devuelve cuatro valores separados por comas: archivos procesados, archivos borrados, bytes borrados, milisegundos empleados> A2: Si (if) [ %par1 ~ %* ] A3: Establecer variable [ Nombre:%par1 A:/sdcard/tmp ] A4: Establecer variable [ Nombre:%par2 A:*.jpg/*.jpeg ] Añadir:Apagado ] A5: Establecer variable [ Nombre:%subtarea A:0 Calcular:Apagado Añadir:Apagado ] A6: Else A7: Establecer variable [ Nombre:%subtarea A:1 Calcular:Apagado Añadir:Apagado ] A8: Fin si (End if) Y la tarea terminaría así... Código:
A37: Si (if) [ %subtarea = 1 ] A38: Flash [ Texto:%archivos(#),%filesbor,%bytesbor,%tictac Largo:Encendido ] A39: Else A40: Devolver [ Valor:%archivos(#),%filesbor,%bytesbor,%tictac Detener:Encendido ] A41: Fin si (End if)
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
| Gracias de parte de: | ||
|
|
|
#40
|
||||
|
||||
|
- Meter una condición para distinguir cuándo funciona como subtarea (con parámetros recibidos) y cuándo funciona directamente (sin parámetros recibidos), sin necesidad de cambiar la tarea.
- Introducir una variable %subtarea que puede tener valores 0/1 dependiendo de que funcione de un modo u otro. Esa variable podría utilizarse para presentar los resultados de la forma adecuada: si es una subtarea, se devuelve una variable a la tarea principal; si no funciona como subtarea, se muestran los resultados en un flash. ![]() Código:
A1: Destino (de goto) <Esta tarea elimina los posibles archivos duplicados de un directorio. Se puede usar como subtarea, poniendo en el parametro1 el directorio, y en el parametro2 el/los tipo(s) de archivos a procesar. La tarea devuelve cuatro valores separados por comas: archivos procesados, archivos borrados, bytes borrados, milisegundos empleados> A2: Establecer variable [ Nombre:%par1 A:/sdcard/tmp ] Si (if) [ %caller1 ~ ui ] A3: Establecer variable [ Nombre:%par2 A:*.jpg/*.jpeg ] Si (if) [ %caller1 ~ ui ] Y terminaría así... A37: Flash [ Texto:%archivos(#),%filesbor,%bytesbor,%tictac Largo:Encendido ] Si (if) [ %caller1 ~ ui ] A38: Devolver [ Valor:%archivos(#),%filesbor,%bytesbor,%tictac Detener:Encendido ] Si te refieres a usar la tarea directamente (para procesar una carpeta fija) la cosa tampoco es complicada. Sería cambiar los "Devolver" de A3/A7 por "Detener" y eliminar el "Devolver" de A32. Pero entonces la tarea perdería su gracia. ![]() ... Ahora estoy buscando la manera de mejorar el tiempo de ejecución metiendo mano a esos dos bucles que os había comentado. De momento creo que desde la consola puedo conseguir la lista de parejas bytes#archivo ya ordenada, y además de varias carpetas al mismo tiempo. Eso permitiría comparar carpetas (donde eso tenga sentido, naturalmente).
__________________
Miembro del equipo que promueve el [Subforo de Tasker]
Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino) Última edición por WillyWeb Día 24/02/16 a las 10:03:08. Razón: Aclarar el último párrafo |
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||