2

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

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

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

我已经通过 {LineFind} 但不确定这是否真的实现了我想要实现的目标。

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

谢谢 !

4

1 回答 1

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
于 2013-02-19T17:49:27.630 回答