Prüfen ob bzw. wann Datei vorhanden ist?

  • Hallo Leute,

    suche grad nach einer Möglichkeit zu schauen ob bzw. ab welcher Nummer eine Datei online verfügbar ist, weis aber nicht wie man es am dümmsten anstellen könnte :D Möchte eine Nummer in eine Inputbox eingeben und dann soll solange geprüft werden bis es positiv wird.

    Sagen wir mal die Datei heist file101.dat und ich gebe in die Box 001 ein, es wiederholt sich bis 101 und macht sich dann bemerkbar das was gefunden wurde. Denke mal das wird mit ner Schleife gehen, aber wie ist das mit dem 001 machbar?

    Danke schonmal im Voraus.

  • So etwas kannst du mit StringFormat() realisieren.
    Dort kannst du den übergebenen Wert speziell formatieren, so also auch einer Zahl führende Nullen verpassen.

    [autoit]


    ProgressOn("Example", "Formatiere Int via StringFormat")

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

    For $i=1 To 100 Step 1
    $FileName = StringFormat("%03i", $i) & ".dat" ; 3 stelliger integer, mit führender 0
    ProgressSet($i, $FileName)
    If FileExists(@ScriptDir & "\" & $FileName) Then ExitLoop ; Datei gefunden
    Sleep(75)
    Next
    ProgressOff()

    [/autoit]
  • Danke für eure Antworten.

    @Matricus
    Das mit dem StringFormat() war ein sehr guter Tip, danke dafür!

    Könnte man das auch noch erweitern, dass weiter gesucht wird, bis es wieder negativ wird - so das man die Spanne kriegt von wo bis wo die Dateien verfügbar sind?

    Was mich auch noch interessiert, lässt sich die Suche mit einem Button unterbrechen und wie ist das in der Schleife wenn man bei to bis unendlich haben möchte?

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

    $number = GUICtrlRead($Combo1)

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

    For $i = $number To (unendlich?) Step +1
    $FileName = StringFormat("%03i", $i)
    $getinfo = InetGetSize($url1 & $filename & $url2)
    GUICtrlSetData($Label1, $filename)
    Sleep(100)
    If $getinfo > 0 Then ExitLoop
    Next

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Eventuell sowas:

    [autoit]


    Local $iEnde = 0,$sUrl1 = "test",$sUrl2 = "test"
    $gInput = InputBox("Dieselwiesel","Anfangszahl eingeben:",Default,"",100,150)
    If $gInput = "" Or @error Then Exit

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

    GUICreate("Dieselwiesel",150,100,-1,-1)
    GUISetState(@SW_SHOW)
    $gLabel = GUICtrlCreateLabel($gInput,10,10,100,20)
    $gButton = GUICtrlCreateButton("Stopp",10,40,130,50)

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

    Do
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case -3
    $iEnde = 1
    Case $gButton
    MsgBox(0,"Ende","Abgebrochen",2)
    $iEnde = 1
    EndSwitch
    $gInput = $gInput + 1
    $sFilename = StringFormat("%03i",$gInput)
    $iGetInfo = InetGetSize($sUrl1 & $sFilename & $sUrl2)
    GUICtrlSetData($gLabel,$sFilename)
    Sleep(100)
    If $iGetInfo = 0 Then
    MsgBox(0,"Ende","Letzte Datei: " & $gInput - 1)
    $iEnde = 1
    EndIf
    Until $iEnde = 1

    [/autoit]

    :thumbup:

    2 Mal editiert, zuletzt von bobekos (27. Oktober 2014 um 11:30)

  • @bobekos

    Danke für deine Antwort. Funktioniert soweit ganz gut, nur eins haut nich so recht hin - und zwar mit dem weitersuchen. Es könnte sein, das die Dateien von file001-100 schon entfernt wurden (also negativ), von file101-119 vorhanden sind (positiv) und ab file120 (wieder negativ) noch nicht verfügbar ist.

    [autoit]


    If $iGetInfo > 0 Then ;habe aus dem = ein > gemacht, so wird bis zu einem Wert > 0 gesucht, jetzt müsste der Spieß rumgedreht werden und weitergesucht werden, bis der Wert wieder = oder < 0 wird und davon -1 abgezogen wird

    [/autoit]
  • Dann willst du wissen welche Dateien da sind und welche nicht? Oder was genau willst du als Ergebnis haben?
    Sollte einfach nur geguckt werden ob die Datei da ist oder nicht dann würde ich hier mit _FTP_ListToArray arbeiten damit ich überhaupt weiß wie viele Dateien da sind. Ansonsten kannst du ja meine Lösung (die neue Version) benutzen und die Schleife abbrechen wenn du keine Lust mehr hast. Ansonsten kannst du dir nie sicher sein ob nicht die nächste Datei da ist.

    [autoit]


    #include <ColorConstants.au3>

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

    Local $iEnde = 0,$sUrl1 = "test",$sUrl2 = "test"
    $gInput = InputBox("Dieselwiesel","Anfangszahl eingeben:",Default,"",100,150)
    If $gInput = "" Or @error Then Exit

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

    GUICreate("Dieselwiesel",150,100,-1,-1)
    GUISetState(@SW_SHOW)
    $gLabel = GUICtrlCreateLabel($gInput,10,10,100,20)
    $gButton = GUICtrlCreateButton("Stopp",10,40,130,50)

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

    Do
    $iMsg = GUIGetMsg()
    Switch $iMsg
    Case -3
    $iEnde = 1
    Case $gButton
    MsgBox(0,"Ende","Abgebrochen",2)
    $iEnde = 1
    EndSwitch
    $gInput = $gInput + 1
    $sFilename = StringFormat("%03i",$gInput)
    $iGetInfo = InetGetSize($sUrl1 & $sFilename & $sUrl2)
    GUICtrlSetData($gLabel,$sFilename)
    Sleep(150)
    If $iGetInfo = 0 Then
    GUICtrlSetColor($gLabel,$COLOR_RED)
    GUICtrlSetData($gLabel,$gInput)
    Else
    GUICtrlSetColor($gLabel,$COLOR_GREEN)
    GUICtrlSetData($gLabel,$gInput)
    EndIf
    Until $iEnde = 1

    [/autoit]

    :thumbup: