sreedhar_kumar
17th March 2005 10:47 UTC
Replace a String with an other in all Files
Hi all,
I have several SQL Files and a BAT File in a directory(including subdirectories). In all these files, I need to replace "C:\THIS" with "E:\THAT".
How can I do that? I also went through "Afrow_UK" Archive Page(http://nsis.sourceforge.net/archive/....php?userid=87).
Sreedhar
glory_man
17th March 2005 11:28 UTC
Maybe Instructor's File-, Text-, Word-functions will help you.
Yathosho
17th March 2005 11:53 UTC
i usually use ReplaceInFile for that
Instructor
17th March 2005 12:12 UTC
Script to find all files (I don't remember what extentions have SQL files) in directory "C:\MySQL" with subdirectories and replace "C:\THIS" with "E:\THAT" (It's only for text files, if the directory contain binary file it will be corrupted, but you can specify directly what files to search)
Name 'Output'
OutFile 'Output.exe'
!include "FileFunc.nsh"
!include "TextFunc.nsh"
!include "WordFunc.nsh"
!insertmacro Locate
!insertmacro LineFind
!insertmacro WordReplace
Section
${Locate} "C:\MySQL" "/L=F /M=*.*" "LocateCallback"
IfErrors 0 +2
MessageBox MB_OK "Error"
SectionEnd
Function LocateCallback
${LineFind} "$R9" "$R9" "1:-1" "LineFindCallback"
IfErrors 0 +3
MessageBox MB_YESNO "Error. Continue?" IDYES +2
StrCpy $0 StopLocate
Push $0
FunctionEnd
Function LineFindCallback
${WordReplace} '$R9' 'C:\THIS' 'E:\THAT' '+' $R9
Push 0
FunctionEnd
Script used headers
Instructor
17th March 2005 14:43 UTC
Script to find all *.sql and *.bat files in directory "C:\MySQL" with subdirectories and replace "C:\THIS" with "E:\THAT"
Name 'Output'
OutFile 'Output.exe'
!include "FileFunc.nsh"
!include "TextFunc.nsh"
!include "WordFunc.nsh"
!insertmacro Locate
!insertmacro GetFileExt
!insertmacro LineFind
!insertmacro WordReplace
Section
${Locate} "C:\MySQL" "/L=F" "LocateCallback"
IfErrors 0 +2
MessageBox MB_OK "Error"
SectionEnd
Function LocateCallback
${GetFileExt} "$R7" $1
StrCmp $1 "bat" linefind
StrCmp $1 "sql" linefind
goto end
linefind:
${LineFind} "$R9" "$R9" "1:-1" "LineFindCallback"
IfErrors 0 +3
MessageBox MB_YESNO "Error. Continue?" IDYES +2
StrCpy $0 StopLocate
end:
Push $0
FunctionEnd
Function LineFindCallback
${WordReplace} '$R9' 'C:\THIS' 'E:\THAT' '+' $R9
Push 0
FunctionEnd
Script used headers