Text einfügen, löschen, ersetzten

    • Offizieller Beitrag

    So gehts:

    [autoit]

    $sRead = StringRegExpReplace($sRead, '(\s\sMS_OTWREG_NOCHECK\s=\s)1(\r\n)', ' MS_OTWREG_NOCHECK = 0' & @CRLF)

    [/autoit]

    Das ist noch solche Macke der AutoIt-Regex-Engine (ist mir auch neu). Obwohl nur 9 Backreferenzen möglich sind, wird der Ausdruck: $10$2 (Backreferenz1 & 0 & Backreferenz2) als Backreferenz10 & Backreferenz2 interpretiert. Was 'n Schwachsinn. :cursing:

  • jetzt ist alles perfekt :thumbup: DANKE!

    Anbei noch für alle andere die komplette Datei:

    Spoiler anzeigen
    [autoit]

    ;~ ~ ------------------------------------------------------------------------------
    ;~ Erklärung zu den RegEx:
    ;~ ------------------------------------------------------------------------------
    ;~ Pattern: (\s\sMS_DESIGNSEED\s=.*\r\n)
    ;~ \s\s Leerzeichen (2x)
    ;~ MS_DESIGNSEED genauer Text
    ;~ \s Leerzeichen
    ;~ = Gleichheitszeichen
    ;~ .* irgendwelche Zeichen, beliebig oft
    ;~ \r\n @CRLF
    ;~ () die ganze Abfrage in Klammern bildet eine Backreferenz

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Replace: '$1' & " %lock MS_DESIGNSEED" & @CRLF
    ;~ $1 Backreferenz Nr. 1 (der gesuchte Text)
    ;~ " %lock MS_DESIGNSEED" & @CRLF <== die zusätzliche Zeile

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ Pattern: (\s\sMS_OTWREG_NOCHECK\s=\s)(1)(.*\r\n)', '$10$3')
    ;~ (\s\sMS_OTWREG_NOCHECK\s=\s) Backreferenz Nr. 1
    ;~ (1) Backreferenz Nr. 2
    ;~ (.*\r\n) Backreferenz Nr. 3

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Replace: '$10$3'
    ;~ $1 Backreferenz Nr. 1
    ;~ 0 die '0' anstelle der Backreferenz Nr. 2
    ;~ $3 Backreferenz Nr. 3
    ;~ ------------------------------------------------------------------------------
    #include <File.au3>
    $pfad = "c:\admin_V8\config\project_config"
    $ext = "*.pcf"

    [/autoit] [autoit][/autoit] [autoit]

    If StringRight($sPfad, 1) <> "\" Then $sPfad &= "\"
    $aFiles = _FileListToArray($sPfad, $ext)
    If @error Then
    MsgBox(64,"","Fehler. Keine Dateien gefunden")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $sPfad = StringTrimRight($sPfad,1)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aFiles[0]
    $fh = FileOpen($sPfad & "\" & $aFiles[$i], 0)
    $sRead = FileRead($fh)
    FileClose($fh)
    $sFileName = $aFiles[$i]

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Einfügen: Textanfang (links) in der Datei suchen und dadrünter neuen Text einfügen
    ;~ Suche: " MS_DESIGNSEED =" und danach "%lock MS_DESIGNSEED" einfügen
    $sRead = StringRegExpReplace($sRead, '(\s\sMS_DESIGNSEED\s=.*\r\n)', '$1' & " %lock MS_DESIGNSEED" & @CRLF)
    ;~ Suche: " MS_SEEDFILES =" und danach "%lock MS_DESIGNSEED" einfügen
    $sRead = StringRegExpReplace($sRead, '(\s\sMS_SEEDFILES\s=.*\r\n)', '$1' & " # Verzeichnis der Seeddateien" & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Löschen: Textanfang (links) in der Datei suchen und dann die ganze Zeile löschen
    ;~ Zeile " MS_COMPRESS_OPTIONS" suchen und danach löschen
    $sRead = StringRegExpReplace($sRead, '(\s\sMS_COMPRESS_OPTIONS.*\r\n)', '')
    ;~ Zeile " MS_LEVEL_EDIT_NESTED_ATTACHMENT_LEVELS" suchen und danach löschen
    $sRead = StringRegExpReplace($sRead, '(\s\sMS_LEVEL_EDIT_NESTED_ATTACHMENT_LEVELS.*\r\n)', '')

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Ersetzen: Textanfang (links) in der Datei suchen und dann mit neuem Text ersetzen
    ;~ Zeile " MS_OTWREG_NOCHECK = 1" suchen und danach mit " MS_OTWREG_NOCHECK = 0" ersetzen
    $sRead = StringRegExpReplace($sRead, '(\s\sMS_OTWREG_NOCHECK\s=\s)1(\r\n)', ' MS_OTWREG_NOCHECK = 0' & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Einfügen: Text am Ende der Datei einfügen
    ;~ "MS_OPENDESIGNFILEFILTER = *.dgn" und "MS_REF_DEFAULTSETTINGS = saveRelativePath=0,ignoreWhenNesting=0" einfügen
    $sRead &= @CRLF & @CRLF & _
    "MS_OPENDESIGNFILEFILTER = *.dgn" & @CRLF & _
    "MS_REF_DEFAULTSETTINGS = saveRelativePath=0,ignoreWhenNesting=0" & @CRLF

    [/autoit] [autoit][/autoit] [autoit]

    $fh = FileOpen($sPfad & "\" & $aFiles[$i], 2)
    FileWrite($fh, $sRead)
    FileClose($fh)
    Next

    [/autoit]