colombeen Posted November 4, 2015 Posted November 4, 2015 Hi guysI've been struggling with this for a bit now and I'm wondering if there is an easy way to do something like this : #cs _FileExists ("path with/without filename with wildcard support", $ReturnPath = True) Should return the actual path if the dir or file with wildcards exists as an array (there could be more then one answer) or False in case it doesn't $Array[0] should contain the amout of results #ce $sFile = _FileExists (@ProgramFilesDir & "\Juniper Networks\Network Connect *\*Network*Connect*.exe") If Not @error Then Run ($sFile[1]) Else ; False was returned and @error was set EndIfHas anybody ever done anything like this without alot of programming?My example could be used for like : MS office => @ProgramFilesDir & "\Microsoft Office*\office*\msaccess.exe"to check how many versions of access are installed (there might be a easier way but i want to check via filepath shizzle)Hope someone can help Thx
water Posted November 4, 2015 Posted November 4, 2015 Please have a look at functions FileFindFirstFile and FileFindNextFile. They support wildcards. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
colombeen Posted November 4, 2015 Author Posted November 4, 2015 (edited) Please have a look at functions FileFindFirstFile and FileFindNextFile. They support wildcards.Hi water, I tried that just now but i keep getting -1 returned while i'm 100% sure the file exists : $file = StringLeft (@SystemDir, 2) & "\Program*Files*\Juniper*Networks\Network*Connect\*Network*Connect*.exe" $test = FileFindFirstFile ($file) If $test = -1 Then Return "Nothing here"It's because that keeps failing that i'm looking for other options Edited November 4, 2015 by colombeen
water Posted November 4, 2015 Posted November 4, 2015 Your problem is described in the help file:"You can use only one wildcard in the filename part or in the extension part i.e. a*.b?." My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
colombeen Posted November 4, 2015 Author Posted November 4, 2015 (edited) Now I tried it like this : $file = @ProgramFilesDir & "\Juniper Networks\Network Connect*\dsNetworkConnect.exe"Same resultActual file path : C:\Program Files (x86)\Juniper Networks\Network Connect 8.0\dsNetworkConnect.exeConsoleWrite ($file) is the exact same without " 8.0" but with *unless the wildcard may only be used in the filename or ext... then FileFindFirstFile is not the function for me Edited November 4, 2015 by colombeen
water Posted November 4, 2015 Posted November 4, 2015 Which version of Windows do you run? 32 or 64 bit? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
colombeen Posted November 4, 2015 Author Posted November 4, 2015 (edited) 64 bit OS. I double checked everything on filepath... not workingrunning in 32 bit mode autoit script => @ProgramFilesDir => C:\Program Files (x86) Edited November 4, 2015 by colombeen
water Posted November 4, 2015 Posted November 4, 2015 It seems that "FileFindFirstFile needs a full path and filename (which can include wildcards) to return a search handle for further exploitation" as described here: My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
water Posted November 4, 2015 Posted November 4, 2015 (edited) So it seems you need to create a list of directories and then loop through the array to search for the needed file using wildcards.To retrieve a list of directories using wildcards use something like this:#include <File.au3> Global $sfile = @ProgramFilesDir & "\Juniper Networks\" $aDirs = _FileListToArray($sfile", "Network Connect*", $FLTA_FOLDERS) _ArrayDisplay($aDirs)or retrieve directory by directory using#include <File.au3> $hFile = FileFindFirstFile(@ProgramFilesDir & "\Juniper Networks\Network Connect*") $sFile = FileFindNextFile($hFile) ConsoleWrite($sFile & @CRLF)But you have to check if the returned result is a directory or a file. Edited November 5, 2015 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted November 5, 2015 Posted November 5, 2015 (edited) I prefer using the built-in UDF _FileListToArray! #include <Array.au3> #include <File.au3> #include <MsgBoxConstants.au3> Example() Func Example() ; List all the files and folders in the desktop directory using the default parameters. Local $aFileList = _FileListToArray(@DesktopDir, "*") If @error = 1 Then MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.") Exit EndIf If @error = 4 Then MsgBox($MB_SYSTEMMODAL, "", "No file(s) were found.") Exit EndIf ; Display the results returned by _FileListToArray. _ArrayDisplay($aFileList, "$aFileList") EndFunc ;==>Example ; Copied from help file :P Edited November 5, 2015 by TheDcoder link EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted November 5, 2015 Posted November 5, 2015 DC,I'm not sure _FileListToArray suupports wildcards in the path. Did you test what the OP is looking for? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Moderators Melba23 Posted November 5, 2015 Moderators Posted November 5, 2015 colombeen,I would suggest using _FileListToArrayRec - that way you can get all copies of the file that exist on the specified path without worrying about wildcards in the path itself. Taking your examples in the OP, this should work:#include <File.au3> #include <Array.au3> $aList = _FileListToArrayRec(@ProgramFilesDir & "\Juniper Networks", "*Network*Connect*.exe", $FLTAR_FILES, $FLTAR_RECUR, Default, $FLTAR_FULLPATH) _ArrayDisplay($aList, "Juniper Networks", Default, 8) $aList = _FileListToArrayRec(@ProgramFilesDir, "msaccess.exe", $FLTAR_FILES, $FLTAR_RECUR, Default, $FLTAR_FULLPATH) _ArrayDisplay($aList, "Access", Default, 8)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
ViciousXUSMC Posted November 5, 2015 Posted November 5, 2015 _FileListToArrayRec() and then loop through the results with StringinStr or RegEx to simulate the Wildcards if you need more control over what to display.
colombeen Posted November 9, 2015 Author Posted November 9, 2015 Ok thx for the info guys. I'll try this out and post my final code when i'm done
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