FileCopy

Kopiert eine oder mehrere Dateien.

FileCopy QuelleMuster, ZielMuster , Überschreiben

Parameter

QuelleMuster

Typ: Zeichenkette

Name einer Datei oder eines Ordners oder ein Platzhaltermuster wie "C:\Temp\*.tmp". Wenn kein absoluter Pfad angegeben ist, wird QuelleMuster im A_WorkingDir-Verzeichnis vermutet.

ZielMuster

Typ: Zeichenkette

Name oder Suchmuster des Ziels. Wenn kein absoluter Pfad angegeben ist, wird das Ziel im A_WorkingDir-Verzeichnis vermutet.

Sofern vorhanden, wird das erste Sternchen (*) im Dateinamen mit dem Quelldateinamen ohne Dateiendung ersetzt, während das erste Sternchen nach dem letzten Punkt (.) mit der Dateiendung der Quelldatei ersetzt wird. Wenn ein Sternchen vorhanden ist, aber die Dateiendung weggelassen wird, wird die Dateiendung der Quelldatei verwendet.

Die folgenden nahezu identischen Beispiele zeigen, wie eine einfache Kopie (unter Beibehaltung der vorhandenen Dateinamen) nur durch Angabe des Ordnernamens durchgeführt werden kann:

FileCopy "C:\*.txt", "C:\Mein Ordner"
FileCopy "C:\*.txt", "C:\Mein Ordner\*.*"

Das Zielverzeichnis muss bereits existieren. Wenn Mein Ordner nicht existiert, verwendet das erste Beispiel oben "Mein Ordner" als Zieldateinamen, während das zweite Beispiel keine Dateien kopiert.

Überschreiben

Typ: Integer

Wenn weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie eine der folgenden Zahlen an, um festzulegen, ob bereits vorhandene Dateien überschrieben werden dürfen:

0: Vorhandene Dateien werden nicht überschrieben. Die Operation wird fehlschlagen und keinen Effekt haben, wenn ZielMuster bereits als Datei oder Verzeichnis existiert.

1: Vorhandene Dateien werden überschrieben. Allerdings werden Dateien oder Unterordner innerhalb von ZielMuster, die kein Gegenstück in QuelleMuster haben, nicht gelöscht.

Andere Werte sind für zukünftige Zwecke reserviert.

Fehlerbehandlung

Es wird ein Error ausgelöst, wenn Dateien nicht kopiert werden konnten, wobei dessen Extra-Eigenschaft die Anzahl der Misserfolge enthält. Wenn keine Datei gefunden wurde und QuelleMuster keine Platzhalterzeichen (* und ?) enthält, wird ein Fehler ausgelöst. Mit anderen Worten, das Kopieren mit einem Platzhaltermuster wie "*.txt" wird als Erfolg angesehen, selbst wenn es keine Dateien findet.

Im Gegensatz zu FileMove wird das Kopieren einer Datei auf sich selbst immer als Misserfolg gewertet, auch dann, wenn der Überschreibmodus aktiv ist.

Wenn Dateien gefunden wurden, wird A_LastError auf 0 oder das Ergebnis der Systemfunktion GetLastError() unmittelbar nach dem letzten Misserfolg gesetzt. Andernfalls enthält A_LastError einen Fehlercode, der eventuell kenntlich macht, warum keine Dateien gefunden wurden.

Bemerkungen

FileCopy kopiert nur Dateien. Um stattdessen den kompletten Inhalt eines Ordners (all seine Dateien und Unterordner) zu kopieren, verwenden Sie das Beispiel ganz unten. Mit DirCopy kann ein einzelner Ordner (einschließlich Unterordner) kopiert werden.

Die Operation wird nicht gestoppt, wenn Fehler auftreten.

FileMove, DirCopy, DirMove, FileDelete

Beispiele

Erstellt eine Kopie unter Beibehaltung des originalen Dateinamens.

FileCopy "C:\Meine Dokumente\Liste1.txt", "D:\Backup\"

Kopiert eine Datei in dasselbe Verzeichnis unter einem anderen Namen.

FileCopy "C:\Meine Datei.txt", "C:\Meine neue Datei.txt"

Kopiert Textdateien in ein anderes Verzeichnis und gibt ihnen eine neue Endung.

FileCopy "C:\Ordner1\*.txt", "D:\Neuer Ordner\*.bkp"

Kopiert alle Dateien und Unterordner in einen anderen Ordner.

FehlerAnzahl := KopiereDateienUndOrdner("C:\Mein Ordner\*.*", "D:\Zielordner für Dateien & Ordner")
if FehlerAnzahl != 0
    MsgBox FehlerAnzahl " Dateien/Ordner konnten nicht kopiert werden."

KopiereDateienUndOrdner(QuelleMuster, ZielOrdner, Überschreiben := false)
; Kopiert alle Dateien und Ordner gemäß QuelleMuster in den ZielOrdner und
; gibt die Anzahl der Dateien/Ordner zurück, die nicht kopiert werden konnten.
{
    FehlerAnzahl := 0
    ; Zuerst alle Dateien kopieren (aber nicht die Ordner):
    try
        FileCopy QuelleMuster, ZielOrdner, Überschreiben
    catch as Fehler
        FehlerAnzahl := Fehler.Extra
    ; Jetzt alle Ordner kopieren:
    Loop Files, QuelleMuster, "D"  ; D bedeutet "nur Ordner".
    {
        try
            DirCopy A_LoopFilePath, ZielOrdner "\" A_LoopFileName, Überschreiben
        catch
        {
            FehlerAnzahl += 1
            ; Jeden Problemordner namentlich anzeigen.
            MsgBox A_LoopFilePath " kann nicht in " ZielOrdner " kopiert werden."
        }
    }
    return FehlerAnzahl
}