Replace line that starts with specified string: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
mNo edit summary |
(→Usage) |
||
Line 7: | Line 7: | ||
<highlight-nsis> | <highlight-nsis> | ||
Push "$INSTDIR\file.ext" ; file to modify | Push "$INSTDIR\file.ext" ; file to modify | ||
Push "string" ; string that a line must begin with | Push "string" ; string that a line must begin with *WS Sensitive* | ||
Push "string is blah" ; string to replace whole line with | Push "string is blah" ; string to replace whole line with | ||
Call ReplaceLineStr | Call ReplaceLineStr |
Latest revision as of 23:56, 19 November 2008
Author: Afrow UK (talk, contrib) |
Description
This function replaces lines with a string in a text file that start with a specified string.
Usage
Push "$INSTDIR\file.ext" ; file to modify Push "string" ; string that a line must begin with *WS Sensitive* Push "string is blah" ; string to replace whole line with Call ReplaceLineStr
The Function
Function ReplaceLineStr Exch $R0 ; string to replace that whole line with Exch Exch $R1 ; string that line should start with Exch Exch 2 Exch $R2 ; file Push $R3 ; file handle Push $R4 ; temp file Push $R5 ; temp file handle Push $R6 ; global Push $R7 ; input string length Push $R8 ; line string length Push $R9 ; global StrLen $R7 $R1 GetTempFileName $R4 FileOpen $R5 $R4 w FileOpen $R3 $R2 r ReadLoop: ClearErrors FileRead $R3 $R6 IfErrors Done StrLen $R8 $R6 StrCpy $R9 $R6 $R7 -$R8 StrCmp $R9 $R1 0 +3 FileWrite $R5 "$R0$\r$\n" Goto ReadLoop FileWrite $R5 $R6 Goto ReadLoop Done: FileClose $R3 FileClose $R5 SetDetailsPrint none Delete $R2 Rename $R4 $R2 SetDetailsPrint both Pop $R9 Pop $R8 Pop $R7 Pop $R6 Pop $R5 Pop $R4 Pop $R3 Pop $R2 Pop $R1 Pop $R0 FunctionEnd
Written for user:moop in this forum topic. -Stu (Afrow UK)