Abrir todos los archivos .lnk en un directorio

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Esteban
Mensajes: 4
Registrado: 13 Ene 2011, 14:40

Abrir todos los archivos .lnk en un directorio

Mensaje 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
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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:)
Esteban
Mensajes: 4
Registrado: 13 Ene 2011, 14:40

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Esteban
Mensajes: 4
Registrado: 13 Ene 2011, 14:40

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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
Avatar de Usuario
Alastor
Aprendiz de Mago
Mensajes: 59
Registrado: 13 Dic 2009, 14:27
Ubicación: Zaragoza, España
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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.
Aprendiendo AutoIt y C++
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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:)
Esteban
Mensajes: 4
Registrado: 13 Ene 2011, 14:40

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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:)
Avatar de Usuario
Esgrimidor
Hacker del Foro
Mensajes: 286
Registrado: 19 Oct 2008, 00:59
Ubicación: Santa Cruz de Tenerife
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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:)
Avatar de Usuario
Esgrimidor
Hacker del Foro
Mensajes: 286
Registrado: 19 Oct 2008, 00:59
Ubicación: Santa Cruz de Tenerife
Contactar:

Re: Abrir todos los archivos .lnk en un directorio

Mensaje 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.
Responder