Hallo erstmal, Inetget + String

  • Hallo liebe Comunity

    Ich beschäftige mich seit ca einer Woche mit Autoit und finde es echt super
    Ich bin halt noch am üben und daher schonmal an eine meiner momentanen Gränzen gestossen

    Ich benötige einen Script der von einer Seite eine datei Downloadet diese öffnet und den inhalt in eine Text Datei Schreibt
    Das ist bisher mein Anfang

    Spoiler anzeigen

    $IP = "http://127.0.0.1"
    InetGet($IP &"/yourhost.com/updater/file.list", @DesktopDir &"\file.list")
    $File = FileOpen(@DesktopDir &"\file.list",0)
    $Chars = FileReadLine($File, 1)
    $file1 = FileOpen("test.txt",1)
    FileWrite($file1, $Chars)
    FileClose("test.txt")

    das funktioniert auch ohne probleme so wie es da steht , mein problem besteht darin das die zeile die der script aussieht folgendermassen aussieht:

    .\notice.txt,453346346652

    und ich nur das brauche das vor dem , steht. Ein weiteres Problem Besteht darin das in der Zeile nicht immer nur .\notice.txt steht sondern auch mal z.B. .\test\teste\testu\file.txt wie kann ich dafür sorgen das er immer alles so ausliest wie es vor dem , steht ?

    Für Eure Hilfe im Voraus vielen Dank Eistee

    P.s. am ende soll ein Script entstehen der die benannten Stellen in der file.list ausliest und im anschluss daran die dateien von der Ip Downloadet
    und anschliessend per FileInstall dort hin setzt wo sie dann gehören.

  • Danke Blubbstar so funktioniert es sehr vielen dank jedoch habe ich das Problem das ich bei einem weiteren befehl Identischer Natur nicht in die nächste Zeile Schreiben kann trotz des befehls &@clrf wo liegt hierbei der Fehler ? Denn Laut der Hilfe müsste es so Funktionieren
    So sieht es Momentan aus :

    Spoiler anzeigen

    $IP = "http://127.0.0.1/yourhost.com/updater"
    InetGet($IP &"/file.list", @DesktopDir &"\file.list")
    $File = FileOpen(@DesktopDir &"\file.list",0)
    $Chars = FileReadLine($File, 1)
    $Chars2 = FileReadLine($File, 2)
    $stringsplit = StringSplit($Chars, ",")
    $stringsplit1 = StringSplit($Chars2, ",")
    $file1 = FileOpen("test.txt",1)
    FileWrite($file1, $stringsplit[1])
    FileWrite($file1, $stringsplit1[1]&@crlf)
    FileClose("test.txt")


    Edit: FolgenderMaßen gelöst :

    Spoiler anzeigen

    $IP = "http://127.0.0.1/yourhost.com/updater"
    InetGet($IP &"/file.list", @DesktopDir &"\file.list")
    $File = FileOpen(@DesktopDir &"\file.list",0)
    $Chars = FileReadLine($File, 1)
    $Chars2 = FileReadLine($File, 2)
    $stringsplit = StringSplit($Chars, ",")
    $stringsplit1 = StringSplit($Chars2, ",")
    $file1 = FileOpen("test.txt",1)
    FileWriteLine($file1, $stringsplit[1]&@crlf)
    FileWriteLine($file1, $stringsplit1[1]&@crlf)
    FileClose("test.txt")

  • Hallo Nochmal
    Ich habe noch eine frage und zwar soll der script ja die file.list Auslesen den Inhalt in eine Textdatei schreiben diese öffnen alle / durch \
    Ersetzen und dann alles downloaden und installieren
    Meine Frage ist jetzt Folgende es kann vorkommen das in der file.list bis zu 3000 zeilen stehen
    und ich müsste jetzt so wie hier

    Spoiler anzeigen

    $Chars1 = FileReadLine($File, 1)
    $Chars2 = FileReadLine($File, 2)
    $Chars3 = FileReadLine($File, 3)
    $Chars4 = FileReadLine($File, 4)
    $Chars5 = FileReadLine($File, 5)
    $Chars6 = FileReadLine($File, 6)
    $Chars7 = FileReadLine($File, 7)
    $Chars8 = FileReadLine($File, 8)
    $Chars9 = FileReadLine($File, 9)
    $Chars10 = FileReadLine($File, 10)
    $Chars11 = FileReadLine($File, 11)
    $Chars12 = FileReadLine($File, 12)
    $Chars13 = FileReadLine($File, 13)
    $Chars14 = FileReadLine($File, 14)
    $Chars15 = FileReadLine($File, 15)
    $Chars16 = FileReadLine($File, 16)
    $Chars17 = FileReadLine($File, 17)
    $Chars18 = FileReadLine($File, 18)
    $Chars19 = FileReadLine($File, 19)
    $Chars20 = FileReadLine($File, 20)
    $Chars21 = FileReadLine($File, 21)
    $Chars22 = FileReadLine($File, 22)
    $Chars23 = FileReadLine($File, 23)
    $Chars24 = FileReadLine($File, 24)
    $Chars25 = FileReadLine($File, 25)
    $Chars26 = FileReadLine($File, 26)
    $Chars27 = FileReadLine($File, 27)
    $Chars28 = FileReadLine($File, 28)
    $Chars29 = FileReadLine($File, 29)
    $Chars30 = FileReadLine($File, 30)
    $Chars31 = FileReadLine($File, 31)
    $Chars32 = FileReadLine($File, 32)
    $Chars33 = FileReadLine($File, 33)
    $Chars34 = FileReadLine($File, 34)
    $Chars35 = FileReadLine($File, 35)
    $Chars36 = FileReadLine($File, 36)
    $Chars37 = FileReadLine($File, 37)
    $Chars38 = FileReadLine($File, 38)
    $Chars39 = FileReadLine($File, 39)
    $Chars40 = FileReadLine($File, 40)
    $Chars41 = FileReadLine($File, 41)
    $Chars42 = FileReadLine($File, 42)
    $Chars43 = FileReadLine($File, 43)
    $Chars44 = FileReadLine($File, 44)
    $Chars45 = FileReadLine($File, 45)
    $Chars46 = FileReadLine($File, 46)
    $Chars47 = FileReadLine($File, 47)
    $Chars48 = FileReadLine($File, 48)
    $Chars49 = FileReadLine($File, 49)
    $Chars50 = FileReadLine($File, 50)
    $Chars51 = FileReadLine($File, 51)
    $Chars52 = FileReadLine($File, 52)
    $Chars53 = FileReadLine($File, 53)
    $Chars54 = FileReadLine($File, 54)


    Jede Zeile Einzelnd Eingeben gibt es hier für mich eine Möglichkeit das einfach zahlen und zeilen unabhängig zu machen ?
    Weil es wäre schon einiges an arbeit für 3000 Zeilen alles einzelnd zu schreiben

    Mfg Eistee

  • Das habe ich gemacht jedoch ohne grossen Erfolg

    Ich habe es noch nicht ganz herausgefunden wie das geht,könntet ihr mir helfen und wenn möglich die zeilen auskommentieren damit ich das in zukunft selbst verwenden kann ?

    Spoiler anzeigen

    #include <file.au3>


    Local $filename = "\file.list"
    Local $filename2 = "\test.txt"
    Local $meinarray
    Local $nLfd1
    Local $arr
    Local $hFile
    Local $hFile2

    $hFile = FileOpen($filename,0)


    _FileReadToArray($filename,$meinarray)
    FileClose($hFile)
    $hFile2 = FileOpen($filename2,2)
    _FileWritefromArray($hFile2,$meinarray)

    das Funktioniert Leider nicht die test.txt bleibt vollkommen leer wer kann mir sagen was hier Falsch gemacht wurde von mir ?

    Edit : Folgendermassen Gelöst

    Spoiler anzeigen


    #include <file.au3>


    Local $meinarray
    $FILEPATH = (@ScriptDir &"\file.txt")
    $filename = (@ScriptDir &"\file.list")
    $hFile = FileOpen($filename,0)


    _FilereadToArray($filename, $meinarray)


    _FileWriteFromArray($FILEPATH, $meinarray)

    So geht das wie baue ich jetzt ein das wieder stringsplit funktioniert ?
    brauche in der file.list nur alles bis zum komma vorhin hatte ich das bereits jedoch habe ich jetzt Dank Bugfixes toller hilfe eine Möglichkeit gefunden
    mit der ich alle lines der file.list in eine file.txt bekomme ohne strings nutzen zu müssen jetzt müssen nur noch alle / in \ umgewandelt werden(Spiele gerade mit stringregexpreplace) und ich muss wieder irgendwie stringsplitt reinbekommen
    Danke schon mal für die tolle Hilfe Bisher (hoffe ich kann bald selber helfen)
    Mfg Eistee


    Edit: Ich erkläre Hier mal genau um was es geht und zwar : ich habe eine Ordner struktur in der ist der Ordner data in diesem sind einige unterordner in denen sich datein befinden sagen wir mal data\hypertext\config\config.pk
    wenn ich jetzt diese struktur benutzen möchte dann editirt sich die files.list so
    ./data/hypertext/config/config.pk,123456789
    Das Script soll jetzt folgendes Tun

    er soll bei ./data/hypertext/config/config.pk,123456789 alles nach dem , weglassen danach alle / in \ verwandeln
    anschliesend soll er die datei ./data/hypertext/config/config.pk nach .\data\hypertext\config\config.pk Downloaden(InetGet)
    da man aber über die file.list mehr als nur eine Datei machen kann (bis 3000) ist es sehr langwierig alles per filewriteline und consorten zu benutzen daher eben diese idee es über externe dateien und arrays einfacher zu bestimmen

    Mfg Eistee

  • Hi Eistee herzlichh wilkomm

    Ich wollte erstmal sagen wenn du (beim schreiben von nem beitrag) oben auf das autitzeichen klickst
    dann wird dein code auch dargestellt wie im editor

    zweitns

    ich kann leider nicht viel helfen aber vielleicht hilft dir das da

    Spoiler anzeigen
    [autoit]

    ; Brav alle Variablen deklarieren
    Local $filename = GUICtrlRead($Input1) & '\InitMonster.txt' ; Name der Datei
    Local $meinarray ; Darin lege ich die Datei ab und ändere den Wert auf den neuen
    Local $meinarray1
    Local $newEXP ; Der neue Wert der in exp rein soll
    Local $nLfd ; einfach ein Variable zum zählen
    Local $nLfd1
    Local $alterWert ; Für den alten Wert
    Local $Multiplikator = GUICtrlRead($Input2) ; Mit was * genommen werden soll
    Local $arr ; Hilfs - Array
    Local $hFile ; FileHandle

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

    $hFile = FileOpen($filename,0) ; Datei zum lesen öffnen
    _FileReadToArray($filename,$meinarray) ; Hier wird die Datei eingelesen und in ein Array gepackt
    FileClose($hFile) ; Datei schliessen

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

    ; Datei zum schreiben öffnen
    $hFile = FileOpen($filename,2)

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

    ; Hier prüfe ich jede Zeile im Array (von 1 bis maximal Index, der in Index 0 steht)
    ; ob er was ersetzen kann

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

    For $nLfd = 1 To $meinarray[0]
    $arr = StringRegExp($meinarray[$nLfd],'\(exp (\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d)\)',3)
    If Not @error AND IsArray($arr) Then
    $alterWert = $arr[0]
    $newEXP = $alterWert * $Multiplikator
    $meinarray[$nLfd] = StringRegExpReplace($meinarray[$nLfd],'\(exp (\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d)\)','(exp ' & $newEXP & ')')
    EndIf
    If $nLfd <> $meinarray[0] Then $meinarray[$nLfd] &= @CRLF
    FileWrite($hFile,$meinarray[$nLfd])
    Next
    ; Datei schliessen
    FileClose($hFile)

    [/autoit]