ElEsteban Posted January 13, 2011 Share Posted January 13, 2011 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 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted January 13, 2011 Moderators Share Posted January 13, 2011 ElEsteban,Welcome to the AutoIt forum. _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. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
ElEsteban Posted January 13, 2011 Author Share Posted January 13, 2011 Thanks you very much M23.I have created this script:expandcollapse popup; 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:I think that its because the number of variables of shellexecute are bigger than the number of .lnk files in the folderHow i can correct this error and use a small code? ThanksElEsteban Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted January 13, 2011 Moderators Share Posted January 13, 2011 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. So you would need something like this: ; Ejecutando *.lnk For $i = 1 To $FileList[0] ShellExecute($FileList[$i]) NextM23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
ElEsteban Posted January 13, 2011 Author Share Posted January 13, 2011 (edited) Thanks you very much Melba23 sorry for my questions im a total noob 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 January 13, 2011 by ElEsteban Link to comment Share on other sites More sharing options...
guinness Posted January 13, 2011 Share Posted January 13, 2011 (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 January 13, 2011 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
ElEsteban Posted January 13, 2011 Author Share Posted January 13, 2011 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 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now