Moin,
ich hab zwar eine Funktion die von gtaspider gepostet wurde gefunden, aber die war mir zu komplex .
Hier mal meine Lösung :
Func _FileSearchAndReplace( $sFile, $uSearch, $uReplace, $bCaseSensitive = 0 )
Local $bResult = True
$hFile = FileOpen( $sFile, 0 )
If $hFile > 0 Then
$sContent = FileRead( $hFile )
FileClose( $hFile )
If IsArray( $uSearch ) And IsArray( $uReplace ) And UBound( $uSearch ) == UBound( $uReplace ) Then
$iCount = UBound( $uSearch )
For $i = 1 To $iCount
$sContent = StringReplace( $sContent, $uSearch[$i], $uReplace[$i], 0, $bCaseSensitive )
Next
ElseIf IsString( $uSearch ) And IsString( $uReplace ) Then
$sContent = StringReplace( $sContent, $uSearch, $uReplace, 0, $bCaseSensitive )
Else
$bResult = False
EndIf
If $bResult Then
$hFile = FileOpen( $sFile, 2 )
FileWrite( $hFile, $sContent )
FileClose( $hFile )
EndIf
Else
$bResult = False
EndIf
Return $bResult
EndFunc
; Und hier für die Schreibfaulen
Func _FileSAR( $sFile, $uSearch, $uReplace, $bCaseSensitive = 0 )
Return _FileSearchAndReplace( $sFile, $uSearch, $uReplace, $bCaseSensitive )
EndFunc
Func _MultiFileSearchAndReplace( $sMask, $uSearch, $uReplace, $bCaseSensitive = 0 )
Local $bResult = True
Local $bGoOn = True
$hSearch = FileFindFirstFile( $sMask )
If $hSearch > -1 Then
$iPos = StringInStr( $sMask, "\", 0, -1 )
If $iPos == 0 Then
$sPath = @WorkingDir & "\"
Else
$sPath = StringLeft( $sMask, $iPos )
EndIf
While $bGoOn And $bResult
$sFile = $sPath & FileFindNextFile( $hSearch )
If @error <> 1
If StringInStr( FileGetAttrib( $sFile ), "D" ) == 0 Then
$bResult = _FileSearchAndReplace( $sFile, $uSearch, $uReplace, $bCaseSensitive )
EndIf
Else
$bGoOn = False
EndIf
Wend
Else
$bResult = False
EndIf
Return $bResult
EndFunc
Funktioniert mit Strings oder Arrays als Parameter für Suchen und Ersetzen.
Update :
Rückgabewert ist jetzt 'True' für hat geklappt und 'False' für fehlgeschlagen (okay ist offensichtlich )
Neue Funktion um mit Dateimaske zu arbeiten (ist noch nicht rekursiv... )