Archive: GetFolderName


GetFolderName
  i don't know whether a function already exists for this, but i had a need to get the last folder in a specified path and so wrote my own.

note, it requires GetParent! (which is found in the documentation)

;usage example:
Push "C:\folder1\folder2"
Call GetFolderName
Pop $0
;in this case returns 'folder2'


GetFolderName


Exch $R0
Push $R1
Push $R2

; Remove trailing slash(es)

loop:
StrCpy $R1 $R0 1 -1
StrCmp $R1 '\' 0 +3
StrCpy $R0 $R0 -1
goto loop

; Get parent directory

Push $R0
Call GetParent
Pop $R1

; Take parent dir off this dir leaving last dir name

StrLen $R2 "$R1"
StrCpy $R0 $R0 "" $R2

; Remove starting slash if present (probably is)

StrCpy $R2 $R0 1
StrCmp $R2 '0 +2
StrCpy $R0 $R0"" 1

Pop $R2
Pop $R1
Exch $R0

FunctionEnd
>
its pretty robust, you can throw anything in the following format at it and it'll handle it:
[anything][any_number_of_backslashes]folder[any_number_of_backslashes]

would love it if this made it's way into the documentation :)

http://nsis.sourceforge.net/Get_last...rest_of_string

Stu