Kann es sein, dass du den Sinn einer Funktion nicht verstehst? Warum hast du da 2 draus gemacht.
So erfolgt der Aufruf, einmal für 'normal' und einmal für 'hard'. Natürlich muss der übergebene Tag mit dem Tag in der Datei übereinstimmen.
Aber ein Fehler war in der Func - man braucht keinen @CRLF anhängen, das macht die Func schon selbst.
[autoit]_WriteBetweenTag(@ScriptDir & '\test.txt', 'normal', 'Das ist der neue Wert.')
_WriteBetweenTag(@ScriptDir & '\test.txt', 'hard', 'Das ist der neue Wert.')
Func _WriteBetweenTag($sFilePath, $sTag, $sText)
Local $iLines = _FileCountLines($sFilePath)
For $i = $iLines To 1 Step -1
If FileReadLine($sFilePath, $i) = "</" & $sTag & ">" Then ExitLoop
Next
If $i = 1 Then Return SetError(1,0,0)
Return _FileWriteToLine($sFilePath, $i, $sText)
EndFunc