kor Posted November 10, 2014 Posted November 10, 2014 I have a need to split apart a file path and look at the very last element. But I never know how big the array is going to be. For instance, if I have a file path that looks like this serversharefolderAfolderBfolderC I need to look at the very last folder after the final "" (in this case, folderC) But I could also have a file path that looks like servershareFolderA So regardless of how deep the file path goes, I always need to look at the last folder. I already know how to break apart the path, but not sure what method I would use to analyze the last folder when I don't know how deep the path could be. Can anyone point me in the right direction?
guinness Posted November 10, 2014 Posted November 10, 2014 UBound() 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
Moderators Solution JLogan3o13 Posted November 10, 2014 Moderators Solution Posted November 10, 2014 If you're using StringSplit, the resultant array's [0] index will show you how many total elements there are. Quick and dirty example: $sDir = "c:\Users\Hades\Desktop\Test\Test1\Test2" Local $aArray = StringSplit($sDir, "\") $x = $aArray[0] ConsoleWrite($aArray[$x] & @CRLF) "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
Moderators Melba23 Posted November 10, 2014 Moderators Posted November 10, 2014 kor,Use StringSplit with the count element and then use that count to index the final element: #include <MsgBoxConstants.au3> $sPath = "\\server\share\folderA\folderB\folderC" $aSplit = StringSplit($sPath, "\") MsgBox($MB_SYSTEMMODAL, "Final Folder", $aSplit[$aSplit[0]]) $sPath = "\\server\share\FolderA" $aSplit = StringSplit($sPath, "\") MsgBox($MB_SYSTEMMODAL, "Final Folder", $aSplit[$aSplit[0]]Or use a RegEx: #include <MsgBoxConstants.au3> $sPath = "\\server\share\folderA\folderB\folderC" $sFinalFolder = StringRegExpReplace($sPath, "^.*\\(.*)$", "$1") MsgBox($MB_SYSTEMMODAL, "Final Folder", $sFinalFolder) $sPath = "\\server\share\FolderA" $sFinalFolder = StringRegExpReplace($sPath, "^.*\\(.*)$", "$1") MsgBox($MB_SYSTEMMODAL, "Final Folder", $sFinalFolder)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
kor Posted November 10, 2014 Author Posted November 10, 2014 (edited) If you're using StringSplit, the resultant array's [0] index will show you how many total elements there are. Quick and dirty example: $sDir = "c:\Users\Hades\Desktop\Test\Test1\Test2" Local $aArray = StringSplit($sDir, "\") $x = $aArray[0] ConsoleWrite($aArray[$x] & @CRLF) Just curious, why do I have to turn $aArray[0] into a new variable $x ? I've noticed that if I do ConsoleWrite($aArray[0]) I get a number, but when I do $aArray[$x] I get the value. Why is that? Edit: $aArray[$aArray[0]] also works, but just wondering why I need to nest the value. Edited November 10, 2014 by kor
Moderators JLogan3o13 Posted November 10, 2014 Moderators Posted November 10, 2014 I've done it for readability, especially if I am going to use that var elsewhere, but it is personal preference. You can use the method Melba suggests just as well. "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum!
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