Get last directory path part: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
Line 7: Line 7:
<highlight-nsis>
<highlight-nsis>
Push "C:\program files\geoffrey\files"
Push "C:\program files\geoffrey\files"
Call GetFileName
Push "\"
Call GetAfterChar
Pop $R0
Pop $R0
</highlight-nsis>
</highlight-nsis>


$R0 is now "files"
$R0 is now "files"
 
Push "." instead of "\" to get a file extension or perhaps "/" for URL.
You can also use this function to get the file extension of an entered file path.
In the function replace...
:StrCmp $2 "\" exit
...with
:StrCmp $2 "." exit
 
The file extension (after the ".") will then be popped off the stack.


== The Function ==
== The Function ==

Revision as of 11:26, 7 September 2005

Author: Afrow UK (talk, contrib)


Description

This script will get the last part of a directory path.

Usage

Push "C:\program files\geoffrey\files"
Push "\"
Call GetAfterChar
Pop $R0

$R0 is now "files" Push "." instead of "\" to get a file extension or perhaps "/" for URL.

The Function

Function GetAfterChar
  Exch $0 ; chop char
  Exch
  Exch $1 ; input string
  Push $2
  Push $3
  StrCpy $2 0
  loop:
    IntOp $2 $2 - 1
    StrCpy $3 $1 1 $2
    StrCmp $3 "" 0 +3
      StrCpy $0 ""
      Goto exit2
    StrCmp $3 $0 exit1
    Goto loop
  exit1:
    IntOp $2 $2 + 1
    StrCpy $0 $1 "" $2
  exit2:
    Pop $3
    Pop $2
    Pop $1
    Exch $0 ; output
FunctionEnd

Original written by KiCHiK (GetFileName) Modified for character input by me (GetAfterChar).

(I also wrote a similar script, but this one is better)

-Stu