; GetParent
; 输入,堆栈顶部 (例如 C:\Program Files\Poop)
; 输出,堆栈顶部 (替换,例如 C:\Program Files)
; 不改变其它变量值。
;
; 用法:
; Push "C:\Program Files\Directory\Whatever"
; Call GetParent
; Pop $R0
; ; 在这里 $R0 将等于"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