Jump to content

Open al the .lnk files in one directory


Recommended Posts

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

  • Moderators

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Link to comment
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

Link to comment
Share on other sites

  • Moderators

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 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

 

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

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 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: 22/04/2018

Link to comment
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

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...