Get last directory path part: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
 
(One intermediate revision by the same user not shown)
Line 2: Line 2:


== Description ==
== Description ==
This script will get the last part of a directory path.
This script will get the last part of a string after a specified character. Useful to get file extensions, last file name or last directory part.


== Usage ==
== Usage ==
Line 14: Line 14:
$R0 is now "files"
$R0 is now "files"
Push "." instead of "\" to get a file extension or perhaps "/" for URL.
Push "." instead of "\" to get a file extension or perhaps "/" for URL.
The return value is empty "" if the input char was not found.


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

Latest revision as of 11:28, 7 September 2005

Author: Afrow UK (talk, contrib)


Description

This script will get the last part of a string after a specified character. Useful to get file extensions, last file name or last directory part.

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 return value is empty "" if the input char was not found.

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