FileCopy

Kopiert eine oder mehrere Dateien.

FileCopy, QuelleMuster, ZielMuster , Überschreiben

Parameter

QuelleMuster

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

ZielMuster

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

Wenn leer oder 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.

Dieser Parameter kann ein Ausdruck sein, auch einer, der nach der Auswertung 1, 0 oder eine leere Zeichenkette ergibt.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird bei Misserfolg auf die Anzahl der Dateien gesetzt, die nicht kopiert werden konnten, und bei Erfolg auf 0.

In beiden Fällen wird ErrorLevel auf 0 gesetzt, wenn die Quelldatei eine einzelne Datei ist (ohne Platzhalter) und nicht existiert. Um diesen Zustand zu erkennen, prüfen Sie mit FileExist() oder IfExist, ob die Quelldatei vorhanden ist, bevor Sie diese kopieren.

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 FileCopyDir kann ein einzelner Ordner (einschließlich Unterordner) kopiert werden.

Die Operation wird nicht gestoppt, wenn Fehler auftreten.

FileMove, FileCopyDir, FileMoveDir, 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.
{
    ; Zuerst alle Dateien kopieren (aber nicht die Ordner):
    FileCopy, %QuelleMuster%, %ZielOrdner%, %Überschreiben%
    FehlerAnzahl := ErrorLevel
    ; Jetzt alle Ordner kopieren:
    Loop, %QuelleMuster%, 2  ; 2 bedeutet "nur Ordner".
    {
        FileCopyDir, %A_LoopFileFullPath%, %ZielOrdner%\%A_LoopFileName%, %Überschreiben%
        FehlerAnzahl += ErrorLevel
        if ErrorLevel  ; Jeden Problemordner namentlich anzeigen.
            MsgBox %A_LoopFileFullPath% kann nicht in %ZielOrdner% kopiert werden.
    }
    return FehlerAnzahl
}