Nach einem String suchen überprüfen und Zeile ändern

  • Hallo leute

    Ich habe ein kleines problem. und zwar ich möchte das ein programm alle inis in einem ordner öffnet liest und einen wert such diesen ersetzt das geht soweit aber ich möchte das der wert der zum beispiel "Geld:" beinhaltet Komplet gelöscht wird also die ZEILE das diese ersetzt wird

    [autoit]

    HotKeySet("{F1}", "Beenden")
    Func Beenden()
    while 1
    Exit
    WEnd
    EndFunc

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

    TrayTip("Beenden", "Beenden kannst du indem du auf F1 Drückst!", 5)

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

    #include <File.au3>
    $sOrdner = FileSelectFolder("Ordner wählen", "")

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

    $WertEndern = InputBox("Bitte wählen", "Bitte gebe hier den wert ein der geändert werden soll.")

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

    $Inwasendern = InputBox("Bitte wählen", "Bitte gib hier ein in was der wert ( "&$WertEndern&" ) geändert werden soll.")

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

    $aFiles = _FileListToArray($sOrdner, "*.ini", 1)
    For $i = 1 To $aFiles[0]
    $sFile = FileRead($sOrdner & "\" & $aFiles[$i])
    $sFile = StringReplace($sFile,$WertEndern,$Inwasendern)
    $datei = FileOpen($sOrdner & "\" & $aFiles[$i], 2)
    FileWrite($datei, $sFile)
    NexT

    [/autoit]


    Inis:

    SionS.ini

    Username: SionS
    Geld: 78565455478
    Herkunft: Asien
    langeweile: Sehr hoch!


    _____________________________

    Comet.ini

    Username: Comet
    Geld: 785545908
    Herkunft: Europa
    langeweile: Ultra hoch!

    ______________________________

    Einmal editiert, zuletzt von SionS (3. Juni 2011 um 20:31) aus folgendem Grund: gelöst

  • Wenn ich das richtig verstanden habe, möchtest du die komplette Zeile ersetzen, auch wenn nur ein Teil übereinstimmt, oder? Falls nicht, wäre ein Beispiel ganz nützlich ;).

    [autoit]

    $sTest = ClipGet()
    $sSearch = 'Geld'
    $sReplace = 'Bla: 123'

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

    $sPattern = '.*\Q' & $sSearch & '\E.*'

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

    $sResult = StringRegExpReplace($sTest, $sPattern, $sReplace)
    ConsoleWrite($sResult & @CRLF)

    [/autoit]
  • Es soll diese zeile die zb "Geld: " enthällt komplet löschen aber nur diese zeile und da was anderes hinschreiben

  • Das geht irgendwie nicht also in der console steht es schon aber in meinem programm nicht

    [autoit]

    HotKeySet("{F1}", "Beenden")
    Func Beenden()
    while 1
    Exit
    WEnd
    EndFunc

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

    TrayTip("Beenden", "Beenden kannst du indem du auf F1 Drückst!", 5)

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

    #include <File.au3>
    $sOrdner = FileSelectFolder("Ordner wählen", "")

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

    $WertEndern = InputBox("Bitte wählen", "Bitte gebe hier den wert ein der geändert werden soll.")

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

    $Inwasendern = InputBox("Bitte wählen", "Bitte gib hier ein in was der wert ( "&$WertEndern&" ) geändert werden soll.")

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

    $aFiles = _FileListToArray($sOrdner, "*.ini", 1)
    For $i = 1 To $aFiles[0]
    $sFile = FileRead($sOrdner & "\" & $aFiles[$i])
    $sFile = StringReplace($sFile,$WertEndern,$Inwasendern)
    $datei = FileOpen($sOrdner & "\" & $aFiles[$i], 2)
    $sTest = $datei
    $sSearch = $WertEndern
    $sReplace = $Inwasendern

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

    $sPattern = '.*\Q' & $sSearch & '\E.*'

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

    $sResult = StringRegExpReplace($sTest, $sPattern, $sReplace)
    FileWrite($sFile, $sResult & @CRLF)
    NexT

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

    MsgBox(64, "Forgang abgeschlossen!", "Alle ( "&$WertEndern&" ) werte wurden in ( "&$Inwasendern&" ) geändert und in den ini's Abgespeichert.")

    [/autoit]
  • Als erstes nimms du bitte das include aus der Funktion raus, und packst es an den Scriptanfang oder so. Danach enfernst du die While Schleife um den Exit Befehl. Dein Script funktioniert nicht, weil FileOpen nicht den Inhalt der Datei zurückgibt, sondern sie im gewünschten Modus öffnet und ein "Handle" zurückgibt, du brauchst FileRead. Wenn du die Hilfe lesen würdest, wüsstest du das... Außerdem Würde ich das StringReplace komplett entfernen, da mein RegExp Pattern seine Aufgabe komplett erfüllt. Und wenn du in Zukunft schnelle und kompetente Hilfe erwartest solltest du genaue Fehlerbeschreibungen liefern. "Das geht irgendwie nicht..." Ist keine genaue Fehlerbeschreibung.