StringRegExpReplace Probleme

  • Hallo ich habe ein Prob wie man oben sieht ^^

    und zwar wird eine datei geladen in der verzeichnis strukturen stehen
    diese bigeinnen mit einem . den konnte ich zum Glück ausschalten mit Replace "." durch "" allerdings bringt das folgendes Problem :
    es gibt bei den verzeichnis strukturen auch dateien also mit .exe oder .jpg usw.
    wie könnte ich erreichen das der Replace befehl nur für den ersten punkt in der line gilt ?


    Hier is mal das Script

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    #include<File.au3>
    #NoTrayIcon
    $Ip = ("http://127.0.0.1/yourhost.com/updater")
    Local $meinarray
    InetGet($Ip &"/file.list",@ScriptDir &"\file.list")
    $filename = (@ScriptDir &"\file.list")
    $FILEPATH = (@ScriptDir &"\file.txt")
    $hFile = FileOpen($filename,0)
    _FilereadToArray($filename, $meinarray)
    _FileWriteFromArray($FILEPATH, $meinarray)
    $split = StringRegExp(FileRead(FileOpen(@ScriptDir & '\file.txt', 0)), '(?<=\n|\A).*(?=,)', 3)
    $file = FileOpen("UpdInf.txt",2)
    For $i = 0 To Ubound($split) -1
    FileWrite("UpdInf.txt", $split[$i] & @crlf)
    Next

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

    $filename1 = @ScriptDir & '\UpdInf.txt'
    $filename2 = @ScriptDir & '\UpdInf2.txt'
    Local $meinarray1
    Local $nLfd
    _FileReadToArray($filename1,$meinarray1)
    For $nLfd = 1 To $meinarray1[0]
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\\','\/')
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\.','')
    Next
    _FileWriteFromArray($filename1,$meinarray1,1,$meinarray1[0])

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

    $filename1 = @ScriptDir & '\UpdInf.txt'
    $filename2 = @ScriptDir & '\UpdInf2.txt'
    Local $meinarray1
    Local $nLfd
    _FileReadToArray($filename1,$meinarray1)
    For $nLfd = 1 To $meinarray1[0]
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\/','\\')
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\.','')
    Next
    _FileWriteFromArray($filename2,$meinarray1,1,$meinarray1[0])
    ProgressOn("Updating KalOnline", "KalOnline-Update in Progress", "Update")
    $filename0 = FileOpen("UpdInf.txt",0)
    $filename3 = FileOpen("UpdInf2.txt",0)
    ProgressSet(5,"5%")
    for $i = 1 to 1500
    $1 = FileReadLine($filename0,$i)
    $2 = FileReadLine($filename3,$i)
    Inetget($Ip&$1,@ScriptDir &$2)
    If $i = 75 Then ProgressSet(10,"10 %")
    If $i = 150 Then ProgressSet(20,"20 %")
    If $i = 225 Then ProgressSet(30,"30 %")
    If $i = 300 Then ProgressSet(40,"40 %")
    If $i = 375 Then ProgressSet(50,"50 %")
    If $i = 450 Then ProgressSet(60,"60 %")
    If $i = 525 Then ProgressSet(70,"70 %")
    If $i = 600 Then ProgressSet(80,"80 %")
    If $i = 675 Then ProgressSet(90,"90 %")
    If $i = 1000 Then ProgressSet(95,"95 %")
    If $i = 1200 Then ProgressSet(97,"97 %")
    If $i = 1500 Then ProgressSet(99,"99 %")

    Next
    ProgressSet(100,"100 %")
    Sleep(200)
    ProgressOff()
    MsgBox(0,"Updates", "All Updates Finished", 1)

    [/autoit]
  • Jetzt einfach mal so gelöst ^^

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    #include<File.au3>
    #NoTrayIcon
    $Ip = ("http://127.0.0.1/yourhost.com/updater")
    Local $meinarray
    InetGet($Ip &"/file.list",@ScriptDir &"\file.list")
    $filename = (@ScriptDir &"\file.list")
    $FILEPATH = (@ScriptDir &"\file.txt")
    $hFile = FileOpen($filename,0)
    _FilereadToArray($filename, $meinarray)
    _FileWriteFromArray($FILEPATH, $meinarray)
    $split = StringRegExp(FileRead(FileOpen(@ScriptDir & '\file.txt', 0)), '(?<=\n|\A).*(?=,)', 3)
    $file = FileOpen("UpdInf.txt",2)
    For $i = 0 To Ubound($split) -1
    FileWrite("UpdInf.txt", $split[$i] & @crlf)
    Next

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

    $filename1 = @ScriptDir & '\UpdInf.txt'
    $filename2 = @ScriptDir & '\UpdInf2.txt'
    Local $meinarray1
    Local $nLfd
    _FileReadToArray($filename1,$meinarray1)
    For $nLfd = 1 To $meinarray1[0]
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\\','\/')
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\./','/')
    Next
    _FileWriteFromArray($filename1,$meinarray1,1,$meinarray1[0])

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

    $filename1 = @ScriptDir & '\UpdInf.txt'
    $filename2 = @ScriptDir & '\UpdInf2.txt'
    Local $meinarray1
    Local $nLfd
    _FileReadToArray($filename1,$meinarray1)
    For $nLfd = 1 To $meinarray1[0]
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\/','\\')
    $meinarray1[$nLfd] = StringRegExpReplace($meinarray1[$nLfd],'\.\','\\')
    Next
    _FileWriteFromArray($filename2,$meinarray1,1,$meinarray1[0])
    ProgressOn("Updating KalOnline", "KalOnline-Update in Progress", "Update")
    $filename0 = FileOpen("UpdInf.txt",0)
    $filename3 = FileOpen("UpdInf2.txt",0)
    ProgressSet(5,"5%")
    for $i = 1 to 1500
    $1 = FileReadLine($filename0,$i)
    $2 = FileReadLine($filename3,$i)
    Inetget($Ip&$1,@ScriptDir &$2)
    If $i = 75 Then ProgressSet(10,"10 %")
    If $i = 150 Then ProgressSet(20,"20 %")
    If $i = 225 Then ProgressSet(30,"30 %")
    If $i = 300 Then ProgressSet(40,"40 %")
    If $i = 375 Then ProgressSet(50,"50 %")
    If $i = 450 Then ProgressSet(60,"60 %")
    If $i = 525 Then ProgressSet(70,"70 %")
    If $i = 600 Then ProgressSet(80,"80 %")
    If $i = 675 Then ProgressSet(90,"90 %")
    If $i = 1000 Then ProgressSet(95,"95 %")
    If $i = 1200 Then ProgressSet(97,"97 %")
    If $i = 1500 Then ProgressSet(99,"99 %")

    Next
    ProgressSet(100,"100 %")
    Sleep(200)
    ProgressOff()
    MsgBox(0,"Updates", "All Updates Finished", 1)

    [/autoit]
    • Offizieller Beitrag

    Hallo,

    warum machst Du nicht einfach ein StringTrimLeft wenn das 1. Zeichen ein Punkt ist?

    Noch ein kleiner Hinweis:

    Solche Anweisungen

    [autoit]

    FileRead(FileOpen(@ScriptDir & '\file.txt', 0))

    [/autoit]

    sind nicht nur überflüssig sondern können auch noch zu Fehlern führen, da die Datei mit FileOpen geöffnet wurde aber nicht mehr mit FileClose geschlossen wird.
    Die Anweisung kann man auch einfach so schreiben:

    [autoit]

    FileRead(@ScriptDir & '\file.txt')

    [/autoit]