Dateien ersetzen - mehrere Dateiendungen?

  • Hallo Leute,

    mit diesem Code ersetze ich die Inhalte in *.txt Datei und es funktioniert perfekt:

    [autoit]

    #include <File.au3>

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

    $searchstring_1 = "G:\ustation_admin_V8i\00000000"
    ;~ $replacestring_1 = "G:\ustation_admin_V8i\00000000"
    $replacestring_1 = StringLeft(@ScriptDir, 2) & "\KTR\00000000"
    ;~ $pfad = "c:\admin_V8\config\project_config\"
    $pfad = @ScriptDir & "\"

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

    $array_1 = _FileListToArray($pfad, "*.txt", 1)
    For $i = 1 To Ubound($array_1)-1
    $content = FileRead($pfad&$array_1[$i]) ; lesen
    $content = StringReplace($content, $searchstring_1, $replacestring_1) ; ersetzen
    $handle = FileOpen($pfad&$array_1[$i], 2) ; Datei zum überschreiben öffnen
    FileWrite($handle,$content) ; neuen Inhalt schreiben
    FileClose($handle) ; Datei schließen
    Next

    [/autoit]

    Jetzt habe ich den Fall, wo nicht nur die in txt-Dateien, sondern auch in *bat und *.bprc die selbe Inhalt ersetzt werden soll.
    Muss ich alle Zeilen noch zwei Mal kopieren und die Dateiendungen anpassen, oder geht es noch einfacher?
    Ich habe es so versucht ;) $array_1 = _FileListToArray($pfad, "*.bprc;*.txt;*.bat", 1)

    Besten Dank vorab!

    Viele Grüße,
    Dino

    Einmal editiert, zuletzt von Dino (27. Februar 2012 um 18:34)

  • Spoiler anzeigen
    [autoit]

    #include <File.au3>

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

    Global $a_Endings[3] = ["txt", "bat", "bprc"] ; Mögliche Dateiendungen

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

    Global $searchstring = "G:\ustation_admin_V8i\00000000"
    Global $replacestring = StringLeft(@ScriptDir, 2) & "\KTR\00000000"

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

    Global $s_Pfad = @ScriptDir & "\"

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

    Global $a_Files = _FileListToArray($s_Pfad, "*.*", 1)
    For $i = 1 To UBound($a_Files) - 1
    For $Endung in $a_Endings ; Gehe alle möglichen Endungen durch
    If StringRight($a_Files[$i], StringLen($Endung)) = $Endung Then ; prüfe auf aktuelle Endung
    $s_Dateipfad = $s_Pfad & $a_Files[$i]
    $s_DateiInhalt = FileRead($s_Dateipfad)
    FileDelete($s_Dateipfad)
    FileWrite($s_Dateipfad, StringReplace($s_DateiInhalt, $searchstring, $replacestring))
    EndIf
    Next
    Next

    [/autoit]