FileMove

Verschiebt oder benennt eine oder mehrere Dateien um.

FileMove QuelleMuster, ZielMuster , Überschreiben

Parameter

QuelleMuster

Typ: Zeichenkette

Name einer Datei oder ein Platzhaltermuster wie z.B. "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 Verschiebung (unter Beibehaltung der vorhandenen Dateinamen) nur durch Angabe des Ordnernamens durchgeführt werden kann:

FileMove "C:\*.txt", "C:\Mein Ordner"
FileMove "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 verschiebt.

Ü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 verschoben 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 eine Ausnahme ausgelöst. Mit anderen Worten, das Verschieben mit einem Platzhaltermuster wie "*.txt" wird als Erfolg angesehen, selbst wenn es keine Dateien findet.

Im Gegensatz zu FileCopy wird das Verschieben einer Datei auf sich selbst immer als Erfolg gewertet, auch dann, wenn der Überschreibmodus nicht 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

FileMove verschiebt nur Dateien. Um stattdessen den kompletten Inhalt eines Ordners (all seine Dateien und Unterordner) zu verschieben, verwenden Sie das Beispiel ganz unten. Mit DirMove kann ein einzelner Ordner verschoben oder umbenannt werden.

Die Operation wird nicht gestoppt, wenn Fehler auftreten.

Obwohl diese Funktion in der Lage ist, Dateien auf einen anderen Datenträger zu verschieben, dauert dies wesentlich länger als eine Verschiebung innerhalb desselben Datenträgers. Der Grund dafür ist, dass eine Verschiebung innerhalb desselben Datenträgers einer Umbenennung entspricht, was wesentlich schneller ist.

FileCopy, DirCopy, DirMove, FileDelete

Beispiele

Verschiebt eine Datei, ohne sie umzubenennen.

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

Benennt eine einzelne Datei um.

FileMove "C:\Datei vorher.txt", "C:\Datei nachher.txt"

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

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

Verschiebt alle Dateien und Unterordner in einen anderen Ordner.

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

VerschiebeDateienUndOrdner(QuelleMuster, ZielOrdner, Überschreiben := false)
; Verschiebt alle Dateien und Ordner gemäß QuelleMuster in den ZielOrdner und
; gibt die Anzahl an Dateien/Ordnern zurück, die nicht verschoben werden konnten.
{
    FehlerAnzahl := 0
    if Überschreiben = 1
        Überschreiben := 2  ; Siehe DirMove für Modus 2 statt 1.
    ; Zuerst alle Dateien verschieben (aber nicht die Ordner):
    try
        FileMove QuelleMuster, ZielOrdner, Überschreiben
    catch as Fehler
        FehlerAnzahl := Fehler.Extra
    ; Jetzt alle Ordner verschieben:
    Loop Files, QuelleMuster, "D"  ; D bedeutet "nur Ordner".
    {
        try
            DirMove A_LoopFilePath, ZielOrdner "\" A_LoopFileName, Überschreiben
        catch
        {
            FehlerAnzahl += 1
            ; Jeden Problemordner namentlich anzeigen.
            MsgBox A_LoopFilePath " kann nicht nach " ZielOrdner " verschoben werden."
        }
    }
    return FehlerAnzahl
}