Página 1 de 1

Abrir todos los archivos .lnk en un directorio

Publicado: 13 Ene 2011, 15:17
por Esteban
Hola, estoy buscando el codigo para que un script de autoit abra todos los archivos .lnk de un directorio. He probado con:
ShellExecute("*.lnk")

Pero no funciona. Hay alguna forma de que autoit detecte todos los .lnk del directorio donde esta (o que yo le especifique los directorios) y abra todos esos archivos que son enlaces .lnk a programas .exe?

Salu2 y Gracias

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 13 Ene 2011, 18:57
por BasicOs
Hola tienes que sustituir *.lnk por el nombre del fichero.
Aquí hay un ejemplo de la ayuda de FileFindNextFile() que recupera los archivos de un directorio:

Código: Seleccionar todo

; Shows the filenames of all files in the current directory.
$search = FileFindFirstFile("*.*")  

; Check if the search was successful
If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
EndIf

While 1
    $file = FileFindNextFile($search) 
    If @error Then ExitLoop
    
    MsgBox(4096, "File:", $file) =>> aqui pondrías shellexecute() o run()
WEnd

; Close the search handle
FileClose($search)

Cuando tengas el código si lo puedes publicar a ver como lo acabaste. Puedes crearte una funcion: EjecutaDir("nombrededirectorio")
Salu22:)

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 14 Ene 2011, 00:25
por Esteban
Hola, al final con la ayuda de la web de autoit inglesa he conseguido el código:

Código: Seleccionar todo

#include <File.au3>
#include <Array.au3>

$Folder = @ScriptDir & "\"
$FileList = _FileListToArray($Folder, "*.lnk") ;
If @error Then Exit
_ArrayDisplay($FileList)
For $A = 1 To $FileList[0]
    ShellExecute($Folder & $FileList[$A])
Next
Espero que le pueda servir a alguien.

Salu2

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 14 Ene 2011, 03:53
por Chefito
Me alegro de que lo hayas solucionado. Seguro que a alguien le servirá en algún momento.

Te recomiendo que analices el código y aprendas de él. Así llegará un momento que casi no necesitarás buscar nada porque ya lo sabrás hacer tú a tu modo :smt024 :smt023 .

Saludos.

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 14 Ene 2011, 17:25
por Esteban
Si que me he quedado mas o menos como es :smt045 y ojala que llegue ese dia :smt001.

Asi es como lo he dejado para utilizarlo:

Código: Seleccionar todo

; Opciones AutoIt
Opt("WinTitleMatchMode",4)
Opt("TrayIconHide", 0)

#include <File.au3>
#include <Array.au3>
$Folder = @DesktopCommonDir & "\"
$FileList = _FileListToArray($Folder, "*.lnk")
If @error Then Exit
For $A = 1 To $FileList[0]
    ShellExecute($Folder & $FileList[$A])
Next

$Folder2 = @DesktopDir & "\"
$FileList2 = _FileListToArray($Folder2, "*.lnk")
If @error Then Exit
For $A2 = 1 To $FileList2[0]
    ShellExecute($Folder2 & $FileList2[$A2])
Next
De esta manera abre todos los accesos directos que hay en el escritorio del usuario actual y del escritorio compartido (los que se ven en pantalla)

Salu2 :smt039

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 14 Ene 2011, 17:55
por Alastor
Me alegro de que ya lo hayas solucionado. Creo que te quedara mucho mejor si lo pones en una funcion en lugar de suelto, asi solo tienes que editar el directorio si quieres añadir alguno mas.

Código: Seleccionar todo

#include <File.au3>
#include <Array.au3>

; Opciones AutoIt
Opt("WinTitleMatchMode", 4)
Opt("TrayIconHide", 0)

ExecuteFolderLinks(@DesktopCommonDir & "\")

ExecuteFolderLinks(@DesktopDir & "\")


Func ExecuteFolderLinks($_Folder)

	$FileList = _FileListToArray($_Folder, "*.lnk")

	If @error Then
		MsgBox(0, "Error", "Se ha producido un error en la funcion _FileListToArray." & @CRLF & "Linea " & @ScriptLineNumber)
		Return -1
	EndIf

	For $A = 1 To $FileList[0]
		ShellExecute($_Folder & $FileList[$A])
	Next

EndFunc   ;==>ExecuteFolderLinks
Saludos.

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 15 Ene 2011, 15:57
por BasicOs
Hola,
Gracias por el código alternativo. :smt024 :smt024 :smt024
En este caso es indiferente usar _FileListToArray() o FileFindNextFile(), la diferencia es que en la primera trabajas sobre una variable que almacenó el directorio en un momento anterior que puede no ser el real, si hubiera un movido, borrado o copia de archivos entre tanto, y la otra es que trabajas en tiempo real sobre los ficheros reales que existen en las carpetas.
En este caso como no habría cambios entre el momento de la "foto" de la lista de ficheros, y los ficheros reales con los que trabajes en ese momento ya que parece que la carpeta de links es muy estatica, y el lapso de tiempo en que se ejecute el programa no es largo para que se creen modificaciones. :smt039


Salu22:)

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 15 Ene 2011, 17:29
por Esteban
Gracias Alastor

Madre mia que cracks estais hechos :smt041

Con lo que yo tardo en programar 2 lineas que medio funcionan :smt022 y lo rapido que vosotros haceis las cosas, ¿que es de tanto programar en autoit o que os sabeis el manual de la "a" a la "z"? :smt017 o ambas cosas? :smt044

A ver cuando me inicio a crear un GUI, que tengo ganas de hacerlo con autoit.

Salu2 :smt039

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 15 Ene 2011, 21:44
por BasicOs
Esteban escribió: Con lo que yo tardo en programar 2 lineas que medio funcionan :smt022 y lo rapido que vosotros haceis las cosas, ¿que es de tanto programar en autoit o que os sabeis el manual de la "a" a la "z"? :smt017 o ambas cosas? :smt044

A ver cuando me inicio a crear un GUI, que tengo ganas de hacerlo con autoit.

Salu2 :smt039
Autoit funciona con la lógica, no hace falta aprender nada, es decir, que las funciones están en la ayuda y que entre los ejemplitos y la simplicidad del nombre de funciones y programar, es solo coger la mecánica de usar la ayuda o el Intellisense del editor Scite.

El gui te lo crea automáticamente el KODA con el editor visual,
Una vez con la práctica te acuerdas de las funciones pero con saber usar los IF THEN y los bucles tienes el 90% hecho.. lo otro es buscar en la ayuda o el foro :smt043 :smt017 :smt017 :smt023
Salu22:)

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 20 Feb 2011, 16:52
por Esgrimidor
Yo lo que tengo es un script que me ejecuta un grupo de programas. Lo que llamo montar un escenario o un perfil de arranque del ordenador.

Por ejemplo : perfil trabajo .

me abre excel, word, el navegador, el cliente de correo y alguna cosilla más.

perfil multimedia

me abre audacity, el editor de video, me lanza la carpeta de imágenes y alguna cosilla más.

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 20 Feb 2011, 17:04
por BasicOs
Esgrimidor escribió:Yo lo que tengo es un script que me ejecuta un grupo de programas. Lo que llamo montar un escenario o un perfil de arranque del ordenador.

Por ejemplo : perfil trabajo .

me abre excel, word, el navegador, el cliente de correo y alguna cosilla más.

perfil multimedia

me abre audacity, el editor de video, me lanza la carpeta de imágenes y alguna cosilla más.
A ese mismo Script que tienes aplicarle la función FileCopyEspecialPARAarchivosLNK() y quitar la linea que tiene para ejecutar en el mismo sitio es donde que hay q poner la func.
Salu22:)

Re: Abrir todos los archivos .lnk en un directorio

Publicado: 20 Feb 2011, 17:16
por Esgrimidor
El escript no es mío y me parece que no está en autoit. O sea que no es editable. Es un programa cerrado donde le pones las líneas de las rutas de los links o ejecutables, y te los va ejecutando por orden sin más. Te monta un escenario en un periquete.