Scriptfehler feststellen

  • Hallo,
    ich schreibe ein Script, dass u.a. einige Dateien kopiert.
    Am Ende des Scriptes, will ich feststellen ob da irgendwo im Script, ein Fehler (z.B. eine Quelldatei war nicht vorhanden und konnte daher auch nicht kopiert werden) aufgetreten ist.

    Ich möchte aber nicht, bei jedem FileCopy-Befehl, den Rückgabewert abfragen, denn das würde mein Script erheblich verlängern.
    Daher wollte ich fragen, ob es da nicht eine spezielle Variable o.ä. gibt, worin alle Scriptfehler gespeichert werden und die man dann am Scriptende auswerten kann um so einen Fehler festzustellen.

    Ich möchte also nur erfahren, dass irgendwo im Script ein Fehler aufgetreten ist (eben ob alle Dateien auch wirklich kopiert wurden).

    Allso etwa sowas hier:

    Scriptanfang
    ...
    Irgendwelche Befehle (werden fehlerefrei ausgefüht)
    ...
    FileCopy( hier tritt der Fehler auf)
    ...
    Irgendwelche anderen Befehle (werden wieder fehlerefrei ausgefüht)
    ...
    Scriptende

    Am Scriptende soll dann die Fehlermeldung ausgegeben werden, auch wenn die Befehle nach dem FileCopy-Befehl fehlerfrei ausgeführt wurden.
    Mit Abfragen von @error am Scriptende geht es nicht und die Sache mit Func OnAutoItExit geht anscheinend nur wenn ich massenweise Abbfragen im Script einbaue (was ich ja nicht möchte).
    Eventuell gibt es da aber noch eine andere Möglichkeit auf die ich noch nicht gekommen bin.

    Gruß:
    BigRox

    • Offizieller Beitrag

    Wenn dein Anliegen funktionieren würde, hätte es man ja einfach. :D
    Nee, Spaß beiseite. Du mußt schon ständig auf @error abfragen.

  • Hi,
    es gibt keine globale Variable.
    Wenn Du Fehler mitplotten willst, dann bleibt Dir nichts anderes übrig, als das selber zu programmieren:

    Gffs. so:
    Am Anfang:

    [autoit]

    $i = 0

    [/autoit]


    Dann bei jedem FileCopy:

    [autoit]

    If FileCopy ("source", "dest") = 0 Then $i +=1

    [/autoit]

    Am Ende:

    [autoit]

    If $i > 0 Then MsgBox (0,"Fehler","Es sind Fehler beim Filecopy aufgetaucht!")

    [/autoit]

    Das dürfte Dein Script nicht unnötig verlängern.

    ;-))
    Stefan

  • Hallo BigRox,

    warum schreibst du dir nicht eine Funktion die die FileCopy-Funktion und das dazugehörige Error-Handling inkl. LOG-Datei schreiben enthält? Dieser übergibst du dann den Quell- und Zielpfad. Wenn du die Dateiangaben (evtl. mit Größenangaben) in einer Textdatei speicherst kannst du diese bei Bedarf austauschen und auch noch den Fortschritt der kompletten Kopieraktion anzeigen.

    Müßte es eigentlich schon im Forum in ähnlicher Form geben.

    mfg (Auto)Bert

  • Ich hätte gesagt:

    [autoit]


    ;...
    If FileCopy($Quelle, $Ziel) = 0 Then _Fehler("Das kopieren von" & $Quelle & "schlug fehl.", False)
    ;...
    Func _Fehler($Beschreibung, $Beenden)
    MsgBox(0, "Fehler", $Beschreibung)
    ;ggf. Log schreiben oder sonstwas
    If $Beenden Then Exit
    EndFunc

    [/autoit]


    Durch das auslagern in eine Funktion wird das zentrale Ändern möglich

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)