FileCopyProgress - ähnlich dem Windows eigenen Copy-Window

  • Angeregt durch eine Anfrage im Forum habe ich mal eine FileCopy-Funktion mit GUI erstellt, die alle Infos des Window-Copy vereint: FileCopyProgress

    Aber Bilder sagen mehr als Worte:

    Wie mit FileCopy lassen sich einzelne Dateien oder Ordner kopieren. Die Verwendung von Wildcards ist möglich. Die Syntax ist also an diese Funktion angepasst.

    Zusätzlich können Ausschluss-Attribute übergeben werden, standardmäßig sind das "SH".

    Syntax: _FileCopyProgress($_sSourcePath, $_sDestinationFolder, $_vFlag, $_sAttribExclude)

    Bei einem Fehler wird dieser angezeigt bzw. mit $FC_LOGCOPY in das Log geschrieben. Der Kopiervorgang für evtl. noch zu kopierende Dateien wird danach fortgesetzt.

    Die Copy-Flags sind identisch zur FileCopy-Funktion. Aber es gibt auch zwei neue!

    $FC_LOGCOPY, erstellt eine Datei "TARGET\FOLDER\progresscopy.log", überschreibt evtl. vorhandene ältere Logdateien

    $FC_OPENLOG, ! setzt automatisch das $FC_LOGCOPY Flag ! - Öffnet die Logdatei (wenn erstellt) nach Beendigung des Kopiervorganges

    Code: Bsp. Log
    [2022-09-02 09:51:31] Start Copy "C:\VM_SHARE\*.GDB" --> "C:\CODE\Test"
    Anzahl Dateien: 5
    Gesamtgröße: 6.0 GB
    [SUCCESS] C:\CODE\Test\GDI.GDB                                                  1.2 GB
    [SUCCESS] C:\CODE\Test\GDI_ORIG_2021_12_08.GDB                                  1.2 GB
    [ERROR]   C:\CODE\Test\GDI_ORIG_2022_01_10.GDB                                  Die Datei ist bereits vorhanden.
    [SUCCESS] C:\CODE\Test\GDI_ORIG_2022_02_28.GDB                                  1.2 GB
    [ERROR]   C:\CODE\Test\GDI_ORIG_2022_08_03.GDB                                  Die Datei ist bereits vorhanden.
    [2022-09-02 09:52:15] End Copy

    ABER:

    Irgendwo hat sich ein Fehler versteckt. Das Kopieren funktioniert tadellos, die Anzeige Restzeit, Restdateien, Fortschritt stimmt zum Ende hin jedoch nicht.

    Hab ich vielleicht einen Denkfehler drin? Das passiert in der Funktion "_ProgressSetCopyData", Zeile 239.

    Zum Testen braucht man aber große Dateien (> 1 GB), sonst geht alles zu schnell.

    Bin für eure Hilfe dankbar. Erledigt, s. Post #2

  • Fehler behoben!

    Ich hatte mir selbst ein Ei gelegt. Die Berechnung der Gesamtgröße aller Dateien hatte ich in einer Schleife mit der Prüfung auf Exclude-Attribute vereint. Aber falsch angeordnet, sodass die Dateigröße bei jedem Attribut ermittelt wurde: 2 Attribute = doppelte Größe. :Face:

    Die Korrektur der Anzeige direkt nach Feststellung vorhandener Datei im $FC_NOOVERWRITE fehlte auch, das brachte dann falsche Restzahl und -Zeit.

    Nun ist es m.M. nach OK. Korrigiert im Startpost. Aber falls ihr noch Fehelr findet - bitte melden.