在 NSIS 安装程序脚本中,我正在尝试检查给定的 httpd.conf 文件是否包含以下行:
包括“c:\xxx\yyy.conf”
如果是这样,那么我的安装程序脚本不会将其附加到文件中,否则,它将附加它。
我已经通过 {LineFind} 但不确定这是否真的实现了我想要实现的目标。
从 NSIS 脚本对文本文件执行某种“grep”的最简单方法是什么?
谢谢 !
这是一个在文件中搜索给定行的示例,使用 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