Get parent directory: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Updated author and download links, and changed format of some pages.) |
m (Less shitty) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{PageAuthor|sunjammer}} | |||
== Description == | == Description == | ||
This function gets the parent folder of a file or subfolder. The result is given without the last "\" (backslash). When a parent is not found, it preserves the path. | This function gets the parent folder of a file or subfolder. The result is given without the last "\" (backslash). When a parent is not found, it preserves the path. | ||
Line 4: | Line 6: | ||
== The Script == | == The Script == | ||
<highlight-nsis> ; GetParent | <highlight-nsis> ; GetParent | ||
; input, top of stack (e.g. C:\Program Files\ | ; input, top of stack (e.g. C:\Program Files\Foo) | ||
; output, top of stack (replaces, with e.g. C:\Program Files) | ; output, top of stack (replaces, with e.g. C:\Program Files) | ||
; modifies no other variables. | ; modifies no other variables. | ||
Line 42: | Line 44: | ||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Disk, Path & File Functions]] |
Latest revision as of 15:32, 8 June 2017
Author: sunjammer (talk, contrib) |
Description
This function gets the parent folder of a file or subfolder. The result is given without the last "\" (backslash). When a parent is not found, it preserves the path.
The Script
; GetParent ; input, top of stack (e.g. C:\Program Files\Foo) ; output, top of stack (replaces, with e.g. C:\Program Files) ; modifies no other variables. ; ; Usage: ; Push "C:\Program Files\Directory\Whatever" ; Call GetParent ; Pop $R0 ; ; at this point $R0 will equal "C:\Program Files\Directory" Function GetParent Exch $R0 Push $R1 Push $R2 Push $R3 StrCpy $R1 0 StrLen $R2 $R0 loop: IntOp $R1 $R1 + 1 IntCmp $R1 $R2 get 0 get StrCpy $R3 $R0 1 -$R1 StrCmp $R3 "\" get Goto loop get: StrCpy $R0 $R0 -$R1 Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd