从NSIS脚本中查找文件中的字符串模式

时间:2013-02-19 16:36:21

标签: string find nsis

在NSIS安装程序脚本中,我正在尝试检查给定的httpd.conf文件是否包含以下行:

  

包括“c:\ xxx \ yyy.conf”

如果是这样,那么我的安装程序脚本就不会将它附加到文件中,否则会附加它。

我来过{LineFind},但不确定这是否真正成为我想要实现的目标。

从NSIS脚本对文本文件执行某种“grep”的最简单方法是什么?

谢谢!

1 个答案:

答案 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