Sign in to follow this  
Followers 0
ElEsteban

Open al the .lnk files in one directory

7 posts in this topic

Hello, im looking for a code for one script with open all .lnk files of a directory. I have tried with:

ShellExecute("*.lnk")

But does not work. There is any code for autoit, for detect all .lnk for the directoy where the script is located (or i specify the directories) and open all these files with are links ".lnk" for programs ".exe"?

Thanks and sorry for my english

Share this post


Link to post
Share on other sites



ElEsteban,

Welcome to the AutoIt forum. :x

_FileListToArray will get all the .lnk files in a folder into an array. You can them loop through the array and ShellExecute each one in turn. :P

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Thanks you very much M23.

I have created this script:

; Abrir Programas

; Opciones AutoIt
;Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("TrayIconHide", 0)
AutoItSetOption("ExpandEnvStrings",1)

#Include <File.au3>
#Include <Array.au3>

; Creando Array
$FileList=_FileListToArray(@ScriptDir, "*.lnk")
If @Error=4 Then
    MsgBox (0,"","No se encontraron Archivos lnk.")
    Exit
EndIf

; Ejecutando *.lnk
ShellExecute($FileList[1])
ShellExecute($FileList[2])
ShellExecute($FileList[3])
ShellExecute($FileList[4])
ShellExecute($FileList[5])
ShellExecute($FileList[6])
ShellExecute($FileList[7])
ShellExecute($FileList[8])
ShellExecute($FileList[9])
ShellExecute($FileList[10])
ShellExecute($FileList[11])
ShellExecute($FileList[12])
ShellExecute($FileList[13])
ShellExecute($FileList[14])
ShellExecute($FileList[15])
ShellExecute($FileList[16])
ShellExecute($FileList[17])
ShellExecute($FileList[18])
ShellExecute($FileList[19])
ShellExecute($FileList[20])
ShellExecute($FileList[21])
ShellExecute($FileList[22])
ShellExecute($FileList[23])
ShellExecute($FileList[24])
ShellExecute($FileList[25])

It works ok, but it gives an error:

Posted Image

I think that its because the number of variables of shellexecute are bigger than the number of .lnk files in the folder

How i can correct this error and use a small code? :x

Thanks

ElEsteban

Share this post


Link to post
Share on other sites

ElEsteban,

As I said before: "loop through the array". The number of elements is returned in the [0] element as explained in the Help file. :P

So you would need something like this: :x

; Ejecutando *.lnk
For $i = 1 To $FileList[0]
    ShellExecute($FileList[$i])
Next

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Thanks you very much Melba23 sorry for my questions im a total noob :x

Its Works very fine, but only have a problem. If the .lnk files have a space in their name they give an error when opening this files. For example:

@ScriptDir\ReadMe.lnk Open

@ScriptDir\Program Help.lnk Give an error

I have tried with:

; Ejecutando *.lnk

For $i = 1 To $FileList[0]

ShellExecute($FileList[$i], "", @ScriptDir)

Next

But its happening the same

I have tried to use quotes in the code but it not work.

If the route of the files have spaces, there is no problem...

How i can solve this?

Edited by ElEsteban

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Because _FileListToArray() Returns the FileName and not the FullPath! See _ArrayDisplay()

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

$Folder = @ScriptDir & "\"
$FileList = _FileListToArray($Folder, "*.lnk") ; <<<<< See here!
If @error Then Exit
_ArrayDisplay($FileList)
For $A = 1 To $FileList[0]
    ShellExecute($Folder & $FileList[$A])
Next
Edited by guinness

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Thank you booth, the script finally works fine.

With this script for two folders I can open all the .lnk files of the desktop:

#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

Thanks very much

Esteban

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0