在NSIS安装程序脚本中,我正在尝试检查给定的httpd.conf文件是否包含以下行:
包括“c:\ xxx \ yyy.conf”
如果是这样,那么我的安装程序脚本就不会将它附加到文件中,否则会附加它。
我来过{LineFind},但不确定这是否真正成为我想要实现的目标。
从NSIS脚本对文本文件执行某种“grep”的最简单方法是什么?
谢谢!
答案 0 :(得分:2)
以下是使用LogicLib搜索给定行到文件的示例,以便于语法。一旦找到该行,搜索就会停止。此示例适用于示例脚本本身:
# find.nsi : sample for LineFind from TextFunc.nsh
!include "textfunc.nsh"
!include "logiclib.nsh"
OutFile "find.exe"
!define lookfor `Section` ;will find
;!define lookfor `Sectionn` ;will not find
Var found
Section
StrCpy $found 0
${LineFind} "find.nsi" "/NUL" "1:-1" "GrepFunc"
${if} $found = 1
MessageBox MB_OK "string found"
${else}
MessageBox MB_OK "string NOT found"
${endIf}
SectionEnd
Function GrepFunc
${TrimNewLines} '$R9' $R9
DetailPrint "test for line $R8 `$R9`"
${if} $R9 == "${lookfor}"
StrCpy $found 1 ;set flag
Push "StopLineFind" ;stop find
${else}
Push 0 ;ignore -> continue
${endIf}
FunctionEnd