Home Menu

Menu



Avisos

Tasker Para hablar de todo lo relacionado con la aplicación tasker


 
Herramientas
  #1  
Viejo 03/12/16, 21:01:32
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
interrogacion Asignar resultados 'ls' a arrays

Esta vez estoy teniendo problemas a la hora de listar archivos de un directorio con el comando 'ls'. Uso el comando ls porque éste me arroja los archivos directamente sin el resto de la ruta, de este modo me ahorro el tener que buscar y reemplazar dichas rutas, por nada, que es lo que quiero vamos: solo obtener los nombres de los archivos de un directorio.
El problema llega cuando pretendo asignar cada archivo localizado y listado por el comando ls a arrays. He intentado todo lo que se me ocurre pero no llego a ver como se podria hacer.
Además me gustaria ser capaz luego de modificar en serie todos los elementos de cada array, mediante la obción buscar y reemplazar, pero '%variable()' solo es para salida de datos, y si tento 50 arrays? No voy a ir buscando y reemplazando array por array!!!! (50 acciones, una por cada array)
Responder Con Cita


  #2  
Viejo 03/12/16, 23:34:24
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Tienes una acción de Tasker que directamente genera un array con los nombres de los archivos de una carpeta, ¿la has probado?.

Y si eso no te vale, o prefieres usar el comando de consola "ls", siempre puedes convertir una cadena de ese tipo en una array con buscar y reemplazar usando como "separador" una línea en blanco. Creo que ya te conté en otro caso cómo se hacía. Creas una variable con una línea en blanco como valor y luego usas esa variable como separador.

Lo de buscar y reemplazar en todos los elementos de un array no debería ser complicado si primero usas "Variable Join" para unir todos los elementos del array en una cadena, haces la sustitución que quieras/necesites y luego separas la cadena de nuevo para regenerar el array.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 04/12/16, 17:46:18
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
Cita:
Originalmente Escrito por SmartPhoneLover Ver Mensaje
Además me gustaria ser capaz luego de modificar en serie todos los elementos de cada array, mediante la obción buscar y reemplazar, pero '%variable()' solo es para salida de datos, y si tento 50 arrays? No voy a ir buscando y reemplazando array por array!!!! (50 acciones, una por cada array)
¿Te refieres a 50 arrays o un array con 50 elementos?
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 04/12/16, 18:09:53
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por danko9696 Ver Mensaje
¿Te refieres a 50 arrays o un array con 50 elementos?
Yo he entendido 50 arrays con un número indefinido de elementos.

En cualquier caso, si esas son las necesidades de la aplicación pues tendrá que hacer las 50 acciones a no ser que la parte que quiere sustituir sea la mismo en todos los casos. Si es así se podría reducir un poco el número de acciones necesarias.
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 04/12/16, 18:28:22
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Yo he entendido 50 arrays con un número indefinido de elementos.

En cualquier caso, si esas son las necesidades de la aplicación pues tendrá que hacer las 50 acciones a no ser que la parte que quiere sustituir sea la mismo en todos los casos. Si es así se podría reducir un poco el número de acciones necesarias.
¿Pero 50 arrays, cada uno con un nombre de variable distinto?

Se puede tratar cada array como un elemento de otro array de nivel superior usando separadores distintos para cada nivel, por lo que no son necesarias 50 acciones. Y con la ventaja de que es muy escalable. Pudiendo manejar miles lo mismo que decenas y/o añadir más niveles con muy poco código adicional. Sin duda sería la mejor elección (aunque no fuese la más eficiente en este caso concreto) para coger práctica con arrays/bucles.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 04/12/16, 18:42:05
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Es tontería dar vueltas al tema hasta que no esté perfectamente definido. Una vez que estén claros los requisitos ya se verá la mejor solución, aunque hacerlo con acciones de Tasker seguramente no será la mejor opción sabiendo que, en palabras de su autor, el procesado de array es muy poco eficiente. Y menos con bucles, que es otro de los puntos flojos de Tasker.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 04/12/16, 18:54:09
Avatar de danko9696
danko9696 danko9696 no está en línea
Usuario muy activo
Mensajes: 2,371
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Mencionado: 34 comentarios
Tagged: 1 hilos
Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Es tontería dar vueltas al tema hasta que no esté perfectamente definido. Una vez que estén claros los requisitos ya se verá la mejor solución, aunque hacerlo con acciones de Tasker seguramente no será la mejor opción sabiendo que, en palabras de su autor, el procesado de array es muy poco eficiente. Y menos con bucles, que es otro de los puntos flojos de Tasker.
Por eso preguntaba si se trata realmente de 50 arrays, porque me parecen muchos para el tema en cuestión, pero quién sabe. Y el procesado de arrays es muy poco eficiente (en parte porque no son realmente arrays sino pseudoarrays) pero salvo que quiera ponerse con javascript/sqlite es la única forma de manejar convenientemente grandes cantidades de datos. Perder eficiencia puede compensar de sobra si ganas flexibilidad, escalabilidad, facilidad de mantenimiento y poder hacer copypaste para otros proyectos.
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 08/12/16, 13:15:34
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Tienes una acción de Tasker que directamente genera un array con los nombres de los archivos de una carpeta, ¿la has probado?.
Te refieres a la acción suministrada por defecto de 'Lista Archivos'?
Si es así, es la opción que evito usar. Por eso paso a utilizar el comando ls.


Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Y si eso no te vale, o prefieres usar el comando de consola "ls", siempre puedes convertir una cadena de ese tipo en una array con buscar y reemplazar usando como "separador" una línea en blanco. Creo que ya te conté en otro caso cómo se hacía. Creas una variable con una línea en blanco como valor y luego usas esa variable como separador.
Mil gracias¡ Al aplicar tu metodología ya funciona perfectamente. ;)


Lo de buscar y reemplazar en todos los elementos de un array no debería ser complicado si primero usas "Variable Join" para unir todos los elementos del array en una cadena, haces la sustitución que quieras/necesites y luego separas la cadena de nuevo para regenerar el array.[/quote]

Exactamente lo que hice. Creo que esta haciendo lo que pretendo.
Responder Con Cita
  #9  
Viejo 08/12/16, 13:23:00
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
Cita:
Originalmente Escrito por danko9696 Ver Mensaje
¿Te refieres a 50 arrays o un array con 50 elementos?
Creo que me equivoqué con la terminología
Quise decir una array (%Fruta) con sus 50 elementos (%Fruta1 = Naranajas, %Fruta2 = Bananas, %Fruta3 = Fresas,...)

Nota: Lo de 50 elementos por array era simplemente por poner un ejemplo, ya que aveces puedo tener 1 o 2 o 5, o 60 o 100 o 250...
Responder Con Cita
  #10  
Viejo 08/12/16, 13:25:08
Avatar de SmartPhoneLover
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
Mensajes: 542
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
Para quien desee seguir y ver donde uso todo esto, visitad el proyecto 'Grabado de llamadas', especificamente la funcionalidad de navegador interno del mismo.
Y para dejar más claro el tema, pues uso el comando ls para crear una lista de los archivos de la carpeta 'Entrante' o 'Saliente' del grabador. De este modo se puede visualizar una lista con todos los archivos de audio generados.

Última edición por SmartPhoneLover Día 08/12/16 a las 13:27:38
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Otro software para Android > Tasker


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 12:38:56 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007