j'ai essayé de me débrouiller seul mais je coinçe, je suis grand débutant sur autoit
Voici mon besoin :
Je dois remplacer les caractères "41100000 XINT" par "41110000 XINT" dans plusieurs fichiers contenus dans plusieurs répertoires et celà quotidiennement d'ou la recherche d'un script pour le faire.
Je me suis basé sur ce post qui se rapproche de mon besoin : https://www.autoitscript.fr/forum/viewtopic.php?t=8431
Malheureusement ce script ne se contente pas de remplacer les caractères recherché par d'autres mais il ajoute des lignes.
Y a t il moyen de simplement faire la recherche et le remplacement ?
voici le code que j'utilise pour le moment et qui atteint presque son but
Merci d'avance
Code : Tout sélectionner
#Include <File.au3>
Global $repertoire =@ScriptDir&"\TEST"
importsage($repertoire)
Func importsage($PathFolder,$sFilter="*.PNM")
Local $array=_FileListToArray(@ScriptDir&"\TEST",$sFilter,1)
If $array=0 Then
MsgBox(64,"erreur","erreur path dossier")
Else
If $array[0] > 0 Then
Local $file,$strTmp
For $i=1 To $array[0]
$file=FileOpen($repertoire&"\"&$array[$i],0)
If $file=-1 Then
MsgBox(64,"erreur","erreur ouverture fichier 1")
Else
$strTmp=FileRead($file)
FileClose($file)
$file=FileOpen($repertoire&"\"&$array[$i],2)
If $file=-1 Then
MsgBox(64,"erreur","erreur ouverture fichier 2")
Else
$CRLF = StringReplace(_ReplaceAndAddString($strTmp), @CR, @CRLF)
FileWrite($file,StringReplace($CRLF, @LF, @CRLF))
FileClose($file)
EndIf
EndIf
Next
EndIf
EndIf
EndFunc
Func _ReplaceAndAddString($string="",$replaceString="41100000 XINT",$addString="")
If $string <> "" And StringInStr($string,"41100000 XINT") <>0 Then
Local $str=StringSplit($string,@LF,0)
$tmp=""
For $i=1 To $str[0]
If StringInStr($str[$i],"41100000 XINT") <> 0 Then
$tmp&=_StringBetween2String($str[$i],"",":")&$addString&@CRLF
$tmp&=StringReplace($str[$i],$replaceString,"41110000 XINT")
Else
$tmp&=$str[$i]
EndIf
Next
Return $tmp
Else
Return $string
EndIf
EndFunc
Func _StringBetween2String($String, $StringDebut, $StringFin, $caseSense = False)
If ((IsString($String) And IsString($StringDebut) And IsString($StringFin)) And IsBool($caseSense)) Then
Local $case = 0
If $caseSense Then
$case = 1
EndIf
If $StringDebut = "" Then
Return StringMid($String, 1, (StringInStr($String, $StringFin, $case, 1)) - 1)
ElseIf $StringFin = "" Then
Return StringMid($String, (StringInStr($String, $StringDebut, $case)) + StringLen($StringDebut))
Else
Local $debut = StringInStr($String, $StringDebut, $case)
If @error = 0 Then
Local $fin = StringInStr($String, $StringFin, $case, 1, $debut)
If $fin <> $debut Then
Local $realDebut = $debut + StringLen($StringDebut)
Return StringMid($String, $realDebut, $fin - $realDebut)
EndIf
EndIf
EndIf
EndIf
SetError(1);erreur parametre
Return ""
EndFunc ;==>_StringBetween2String