consulta-Que reconosca si hay carpetas para continuar o no
consulta-Que reconosca si hay carpetas para continuar o no
Hola,mi primer post,aqui va:
Utilizo un programa para abrir muchas imagenes que se encuentran dentro de subcarpetas que a su vez estan en carpetas,que a su ves pertenecen a una carpeta principal,asi:
CARPETA MADRE
Carpeta A
subcarpeta A1
imagen.jpg
subcarpeta A2
imagen.jpg
Carpeta B
subcarpeta B1
imagen.jpg
subcarpeta B2
imagen.jpg
subcarpeta B3
imagen.jpg
subcarpeta B4
imagen.jpg
subcarpeta B5
imagen.jpg
Carpeta C
subcarpeta C1
imagen.jpg
Necesito automatizar un proceso por el cual este programa que utilizo,que no es de windows, este abriendo cada subcarpeta A1,A2,B1,B2,B3,B4,B5,C1,etc,pero que cuando este haciendo esto por ejemplo despues de la subcarpeta A2 ,reconosca que no hay una subcarpeta A3 y entonces continue en subcarpeta B1,y despues reconosca que no hay subcarpeta B6,y continue en subcarpeta C1,en resumen,, diferenciar si dentro de las carpetas A,B,C,etc hay subcarpetas para seguir el proceso o no.A todo esto decir que yo desconosco cuantas subcarpetas hay en Carpetas A,B,C,etc,es decir, como son muchas carpetas,no quiero tener que escribir el nombre de cada una en el script,sino que el programa se de cuenta por algun patron o algo que debe continuar o no.
Lo que he averiguado hasta ahora,(gracias renzoARG),es que debo usar _FileListToArrayRec o _FileListToArray ,pero recien estoy empezando con autoit,asi que conosco lo basico,y ya realize un script pero muy simple con SEND, mouseclick,pero estoy aprendiendo.
Utilizo un programa para abrir muchas imagenes que se encuentran dentro de subcarpetas que a su vez estan en carpetas,que a su ves pertenecen a una carpeta principal,asi:
CARPETA MADRE
Carpeta A
subcarpeta A1
imagen.jpg
subcarpeta A2
imagen.jpg
Carpeta B
subcarpeta B1
imagen.jpg
subcarpeta B2
imagen.jpg
subcarpeta B3
imagen.jpg
subcarpeta B4
imagen.jpg
subcarpeta B5
imagen.jpg
Carpeta C
subcarpeta C1
imagen.jpg
Necesito automatizar un proceso por el cual este programa que utilizo,que no es de windows, este abriendo cada subcarpeta A1,A2,B1,B2,B3,B4,B5,C1,etc,pero que cuando este haciendo esto por ejemplo despues de la subcarpeta A2 ,reconosca que no hay una subcarpeta A3 y entonces continue en subcarpeta B1,y despues reconosca que no hay subcarpeta B6,y continue en subcarpeta C1,en resumen,, diferenciar si dentro de las carpetas A,B,C,etc hay subcarpetas para seguir el proceso o no.A todo esto decir que yo desconosco cuantas subcarpetas hay en Carpetas A,B,C,etc,es decir, como son muchas carpetas,no quiero tener que escribir el nombre de cada una en el script,sino que el programa se de cuenta por algun patron o algo que debe continuar o no.
Lo que he averiguado hasta ahora,(gracias renzoARG),es que debo usar _FileListToArrayRec o _FileListToArray ,pero recien estoy empezando con autoit,asi que conosco lo basico,y ya realize un script pero muy simple con SEND, mouseclick,pero estoy aprendiendo.
Re: consulta-Que reconosca si hay carpetas para continuar o
¿no hay subcarpetas en subcarpeta A1?
podrias hacer algo asi:
Saludos
podrias hacer algo asi:
Código: Seleccionar todo
#include <File.au3>
#include <Array.au3>
Global $CarpetaMadre="Aqui to directorio"
Local $aNCarpetas=_FileListToArray($CarpetaMadre,"*.")
_ArrayDisplay($aNCarpetas)
Local $aSubCarpetas=0
Local $aSubCarpetas2=0
For $i=1 to $aNCarpetas[0]
$aSubCarpetas=_FileListToArray($CarpetaMadre & "\" & $aNCarpetas[$i])
_ArrayDisplay($aSubCarpetas)
For $x=1 to $aSubCarpetas[0]
$aSubCarpetas2=_FileListToArray($CarpetaMadre & "\" & $aNCarpetas[$i] & "\" & $aSubCarpetas[$x])
_ArrayDisplay($aSubCarpetas2)
Next
Next
- ............................................
......................................
Re: consulta-Que reconozca si hay carpetas para continuar o
Hola..
Realmente las UDF han facilitado mucha esta tarea, con _FileListToArrayRec lo haces con unas cuantas lineas y utilizando includes, lo que si se quiere hacer sin usar los includes requeriría bucles, usar FileFindFile.., etc..
Deberías mirar los ejemplos, aquí uno sencillo.
Saludos..
Realmente las UDF han facilitado mucha esta tarea, con _FileListToArrayRec lo haces con unas cuantas lineas y utilizando includes, lo que si se quiere hacer sin usar los includes requeriría bucles, usar FileFindFile.., etc..
Deberías mirar los ejemplos, aquí uno sencillo.
Código: Seleccionar todo
#include <Array.au3>
#include <File.au3>
$sDirectorio="c:\Images"
Local $aArray = _FileListToArrayRec($sDirectorio, "*.jpg", 1,$FLTAR_RECUR)
_ArrayDisplay($aArray)
Re: consulta-Que reconosca si hay carpetas para continuar o
No hay subcarpetas en subcarpeta A1 y en ninguna otra subcarpeta,solo hay archivos y de esos archivos en cada subcarpeta me intereza uno solo, que es una imagen,que tiene el mismo nombre en todas las subcarpetas,pero no es la misma imagen,y es la que finalmente el programa abre,le hace lo que tiene que hacerle ,ciera esa imagen y continua con otra imagen.Dany escribió:¿no hay subcarpetas en subcarpeta A1?
podrias hacer algo asi:
SaludosCódigo: Seleccionar todo
#include <File.au3> #include <Array.au3> Global $CarpetaMadre="Aqui to directorio" Local $aNCarpetas=_FileListToArray($CarpetaMadre,"*.") _ArrayDisplay($aNCarpetas) Local $aSubCarpetas=0 Local $aSubCarpetas2=0 For $i=1 to $aNCarpetas[0] $aSubCarpetas=_FileListToArray($CarpetaMadre & "\" & $aNCarpetas[$i]) _ArrayDisplay($aSubCarpetas) For $x=1 to $aSubCarpetas[0] $aSubCarpetas2=_FileListToArray($CarpetaMadre & "\" & $aNCarpetas[$i] & "\" & $aSubCarpetas[$x]) _ArrayDisplay($aSubCarpetas2) Next Next
Cada vez me gusta mas esto de programar... ,saludos
Re: consulta-Que reconosca si hay carpetas para continuar o
Prueba el código. ya luego solo falta agregar una repetición mas dentro de las subcarpetas y lanzar las imágenes.
saludos
saludos
- ............................................
......................................
Re: consulta-Que reconosca si hay carpetas para continuar o
Me da un error en la linea 12 asi:Dany escribió:Prueba el código. ya luego solo falta agregar una repetición mas dentro de las subcarpetas y lanzar las imágenes.
saludos
For $i=1 to $aNCarpetas[0]
For $i=1 to $aNCarpetas^ERROR
Error:Subscript used o non-accessible variable
Re: consulta-Que reconozca si hay carpetas para continuar o
Con esto ya tengo en parte lo que necesito,coloque la carpeta madre en $sDirectorio="c:\Images"y me aparecio una lista de todas las imagenes que estan en las subcarpetas,ahora solo faltaria como hacer para que el programa que utilizo para abrir esas imagenes,vaya tomando cada imagen desde la fila [1] hasta la ultima,porque ya tengo hecho el script para cuando la imagen este dentro del programa,entonces como puedo llamarlas una por una? SaludosPDF escribió:Hola..
Realmente las UDF han facilitado mucha esta tarea, con _FileListToArrayRec lo haces con unas cuantas lineas y utilizando includes, lo que si se quiere hacer sin usar los includes requeriría bucles, usar FileFindFile.., etc..
Deberías mirar los ejemplos, aquí uno sencillo.
Saludos..Código: Seleccionar todo
#include <Array.au3> #include <File.au3> $sDirectorio="c:\Images" Local $aArray = _FileListToArrayRec($sDirectorio, "*.jpg", 1,$FLTAR_RECUR) _ArrayDisplay($aArray)
Re: consulta-Que reconosca si hay carpetas para continuar o
Si el programa con el que las abres esta por defecto. entonces usa algo asi.
sino esta por defecto. usa algo así.
saludos
Código: Seleccionar todo
For $i=1 to $aArray[0]
ShellExecute($sDirectorio & "\" & $aArray[$i])
Next
Código: Seleccionar todo
For $i=1 to $aArray[0]
ShellExecute("rutacompletadelprogramayelnombredelprograma",$sDirectorio & "\" & $aArray[$i])
Next
- ............................................
......................................
Re: consulta-Que reconosca si hay carpetas para continuar o
Bueno,creo que va a quedar asi;aunque hay algo que quiero saber como funciona,en los comentarios me explico:Dany escribió:Si el programa con el que las abres esta por defecto. entonces usa algo asi.
sino esta por defecto. usa algo así.Código: Seleccionar todo
For $i=1 to $aArray[0] ShellExecute($sDirectorio & "\" & $aArray[$i]) Next
saludosCódigo: Seleccionar todo
For $i=1 to $aArray[0] ShellExecute("rutacompletadelprogramayelnombredelprograma",$sDirectorio & "\" & $aArray[$i]) Next
#include <Array.au3>
#include <File.au3>
$sDirectorio="d:\Mis Documentos transferidos desde C\Carpeta de Prueba"; guardamos temporalmente esta carpeta en la variable $sDirectorio
Local $aArray = _FileListToArrayRec($sDirectorio, "*.jpg", 1,$FLTAR_RECUR);Hacemos una lista de solo los archivos jpg que estan en la carpeta "carpeta de prueba",a nivel de todas las subcarpetas,y que devuelva solo los archivos
_ArrayDisplay($aArray);aca se muestran
For $i=1 to $aArray[0];Aqui es donde quiero saber que hace,va de la celda 1 a la celda [0],y en consecuencia va por la imagen en la celda [1] ?, o va desde la 1 a 0,pero como la celda [0] muestra la cantidad total de imagenes,en consecuencia va por todas?como es..
ShellExecute($sDirectorio & "\" & $aArray[$i]);Y aqui ejecuta una por una o todas juntas? ,por el Next asumo que es una por una,pero por las dudas pregunto
Next
;Aqui abajo la imagen ya esta abierta en el programa
MouseClick("left",1772,304,1)
Sleep(250)
MouseClick("left",522,294,1)
MouseClick("left",560,100,2)
Send("7",1)
Send("0",1)
Send("{ENTER}")
Sleep(450)
MouseMove(1324,1013)
MouseClick("left",1324,1013,1)
Sleep(3500);retardo de 3,5 segundos para que termine de procesar
MouseMove(1698,1103)
MouseClick("left",1698,1103,1);guarda
Sleep(350)
MouseClick("left",1835,1114,1);cierra la imagen y aca termina de procesar la primera imagen
Y el Next va aqui al final despues de MouseClick("left",1835,1114,1) o esta bien como lo deje?
Saludos..
Re: consulta-Que reconosca si hay carpetas para continuar o
_FileListToArrayRec retora un array comenzando en indice 0.
resulta que el array[0]= contiene la cantidad de elementos en el array.
entonces haces la repeticion for
saludos
resulta que el array[0]= contiene la cantidad de elementos en el array.
entonces haces la repeticion for
Código: Seleccionar todo
for $i=1 to array[0] ;para i=1 hasta array[0] (que contiene la cantidad de elementos)
ShellExecute($sDirectorio & "\" & $aArray[$i]);aqui abres la imagen correspodiente al indice del array con el programa predeterminado
;aqui el codigo para atumatizar
MouseClick("left",1772,304,1)
Sleep(250)
MouseClick("left",522,294,1)
MouseClick("left",560,100,2)
Send("7",1)
Send("0",1)
Send("{ENTER}")
Sleep(450)
MouseMove(1324,1013)
MouseClick("left",1324,1013,1)
Sleep(3500);retardo de 3,5 segundos para que termine de procesar
MouseMove(1698,1103)
MouseClick("left",1698,1103,1);guarda
Sleep(350)
MouseClick("left",1835,1114,1);cierra la imagen y aca termina de procesar la primera imagen
Next ;volvemos al comienzo del for hasta que se termine el array
- ............................................
......................................
Re: consulta-Que reconosca si hay carpetas para continuar o
¡¡¡¡FUNCIONA¡¡¡¡ Solo me falta una cosa,al principio tengo que cerrar la ventana del ArrayDisplay para que comienze,y no he podido con winclose,y otros,ultima ayuda,pero queda asi:Dany escribió:_FileListToArrayRec retora un array comenzando en indice 0.
resulta que el array[0]= contiene la cantidad de elementos en el array.
entonces haces la repeticion for
saludosCódigo: Seleccionar todo
for $i=1 to array[0] ;para i=1 hasta array[0] (que contiene la cantidad de elementos) ShellExecute($sDirectorio & "\" & $aArray[$i]);aqui abres la imagen correspodiente al indice del array con el programa predeterminado ;aqui el codigo para atumatizar MouseClick("left",1772,304,1) Sleep(250) MouseClick("left",522,294,1) MouseClick("left",560,100,2) Send("7",1) Send("0",1) Send("{ENTER}") Sleep(450) MouseMove(1324,1013) MouseClick("left",1324,1013,1) Sleep(3500);retardo de 3,5 segundos para que termine de procesar MouseMove(1698,1103) MouseClick("left",1698,1103,1);guarda Sleep(350) MouseClick("left",1835,1114,1);cierra la imagen y aca termina de procesar la primera imagen Next ;volvemos al comienzo del for hasta que se termine el array
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage") ;Shift-Alt-d
#include <Array.au3>
#include <File.au3>
$sDirectorio="d:\Mis Documentos transferidos desde C\Carpeta de Prueba "; guardamos temporalmente esta carpeta en la variable $sDirectorio
Local $aArray = _FileListToArrayRec($sDirectorio, "*.jpg", 1,$FLTAR_RECUR);Hacemos una lista de solo los archivos jpg que estan en la carpeta
_ArrayDisplay($aArray)
For $i=1 to $aArray[0];para i=1 hasta array[0] (que contiene la cantidad de elementos)
Sleep(550)
ShellExecute($sDirectorio & "\" & $aArray[$i]);aqui abres la imagen correspondiente al indice del array con el programa predeterminado
WinWaitActive("nombre.jpg","");esperamos se active la ventana de edicion
Sleep(1250)
Send("{DOWN 1}")
Sleep(125)
Send("{ENTER}")
Sleep(1250)
MouseClick("left",1772,304,1)
Sleep(250)
MouseClick("left",522,294,1)
MouseClick("left",560,100,2)
Send("7",1)
Send("0",1)
Send("{ENTER}");Fija en 70 la herramienta
Sleep(450)
MouseMove(1324,1013)
MouseClick("left",1324,1013,1)
Sleep(3500);retardo de 3,5 segundos para que termine de procesar
MouseMove(1698,1103)
MouseClick("left",1698,1103,1);guarda
Sleep(350)
MouseClick("left",1835,1114,1);cierra y aca termina la primera imagen
Sleep(1000)
Next;volvemos al comienzo del for hasta que se termine el array
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script es "Pausado"',0,0)
WEnd
ToolTip("")
EndFunc
Func Terminate()
Exit 0
EndFunc
Func ShowMessage()
MsgBox(4096,"","Esto es un mensaje.")
EndFunc
Y lo puedo pausar y cancelar cuando quiero,una vez reinicie la pc para que no siguiera, ,pero descubri la pausa.
Re: consulta-Que reconosca si hay carpetas para continuar o
Solo quita el arraydisplay si no quieres que se muestre. solo es para ver el array. no es necesario.
Saludos
Saludos
- ............................................
......................................
Re: consulta-Que reconosca si hay carpetas para continuar o
Dany,si me dijeron que el array es solo para mostrar,no hace falta en este caso,el script esta trabajando muy bien,con algunos pulidos por aqui y por alla,ahora voy a tratar de que sea un poco mas rapido,aunque esto este limitado por el programa que utilizo,pero va todo bien,saludos
Re: consulta-Que reconosca si hay carpetas para continuar o
depende de lo que hagas con el programa se podría hacer en Autoit así sera mas rápido.
saludos
saludos
- ............................................
......................................