Stack Overflow

  • Hallo zusammen,

    ich benötige mal einen kleinen Schubs um mein Problem zu lösen.

    Ich habe ein Script erstellt, welches als Schleife laufen soll, soweit gut und fast schön.

    Aber nach einer gewissen Zeit bekomme ich die Fehlermeldung wie im Betreff.

    Ich grübel jetzt schon eine weile darüber, aber irgendwo habe ich eine Fehler drin, wo ich keine Lösung zu finde.

    Anbei mal das Script in der Hoffnung einer von hier findet die Lösung.

    Ist bestimmt nicht schwer aber ich habe nun keinerlei Idee mehr.

    Das Script soll lauf einem Server laufen und bei Bedarf PDF Dateien auf einen anderen Server verschieben, da meine User auf dem die PDF Dateien ankommen keinen Zugriff bekommen sollen.

    Diese werden über MFP Geräte als FDP Datei eingescannt.

    Bei dem Befehl FileMove habe die " eingefügt, sonst wären dort Smiles


    Spoiler anzeigen

    #include <array.au3>

    #include <File.au3>

    #include <WinAPIFiles.au3>


    kopieren()

    Func kopieren()

    $Quelle = "D:\Ordner\"

    $Ziel1 = "\\Server\D$\Verzeichnis\"

    $Ziel2 = "\\Server\D$\Verzeichnis1\Verzeichnis2"


    Local $PDF = _FileListToArrayRec($Quelle,"*.pdf", 1,1)

    For $i = 1 to UBound($PDF, $UBOUND_ROWS) - 1

    $Verzeichnis = StringSplit($PDF[$i],"\")

    $Zugriff = _WinAPI_FileInUse($Quelle&$PDF[$i])

    $byte = FileGetSize($Quelle&$PDF[$i])

    If $Zugriff = "1" OR $byte = "0" Then

    Else

    If $Verzeichnis[1] = "Allgemein" then

    "FileMove($Quelle&$PDF[$i],$Verwa&$Verzeichnis[2], 8)"

    Else

    "FileMove($Quelle&$PDF[$i],$Home&$Verzeichnis[1]&"\Scanner\"&$Verzeichnis[2], 8)"

    EndIf

    EndIf

    Next

    For $i = 1 to UBound($PDF, $UBOUND_ROWS) - 1

    _ArrayDelete($PDF, $i)

    Next

    pause()

    EndFunc

    Func pause()

    sleep(10000)

    kopieren()

    EndFunc

  • Tipp1: Hier im Forum kannst du deinen Code als Code formatiert anzeigen lassen (Schaltfläche </>), dann kann man das besser lesen.

    Tipp2: Was alpines schon schrieb nur schon mal mit einer kleinen Lösung:

    1. Sofern du die Pause nicht noch woanders aufrufen willst/musst, kannst du sie normal ans Ende deiner Funktion einbauen.
    2. Geb deiner Pause Funktion doch eine Variable mit, dann kannst du sie variabler mehrfach nutzen
    3. Nutze eine While-Schleife, wenn dir die Anzahl der Durchläufe unbekannt ist und bau dir eine Möglichkeit ein diese auch zu beenden. (im unteren Code noch nicht enthalten!)
    4. Deklariere jede Variable.
    5. Ein leeres then macht man nicht, dafür gibt es "not"
    6. Kann dein Skript so wie es war nicht funktionieren.

    5 Mal editiert, zuletzt von Moombas (31. Juli 2020 um 13:57)

  • Hallo Ihr beiden,

    ja das ich mit der Schleife ein Problem habe, ist mir ja bekannt.

    Hatte nur eine komplette Blockade wie ich da raus kommen oder wie man es einfacher lösen kann.

    Werde das Script von Mommbas morgen mal entsprechend testen und noch anpassen.

    Da ich gerade im Urlaub bin kann meine Rückantwort etwas dauern, aber sie kommt.

    Danke erstmal

  • ja das ich mit der Schleife ein Problem habe, ist mir ja bekannt.

    Hatte nur eine komplette Blockade wie ich da raus kommen oder wie man es einfacher lösen kann.

    Als Tipp: Verwende z.B.

    AutoIt
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

    Dann findest du schon viele Fehler vorweg und lernst "vernünftiges" Deklarieren/Initialisieren von Variablen etc.

    Kannst es natürlich auch anpassen, nicht jeder braucht alle Parameter.