FileMove

Verschiebt eine oder mehrere Dateien, oder benennt sie um.

FileMove, QuelleMuster, ZielMuster , Überschreiben

Parameter

QuelleMuster

Name einer Datei oder ein Platzhaltermuster wie 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.

Wenn 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 man eine einfache Verschiebung durchführen kann (unter Beibehaltung der vorhandenen Dateinamen), indem man nur den Ordnernamen angibt:

FileMove, C:\*.txt, C:\Mein Ordner
FileMove, C:\*.txt, C:\Mein Ordner\*.*

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

Überschreiben

Dieser Parameter bestimmt, ob bereits vorhandene Dateien überschrieben werden dürfen. Wenn dieser Parameter 1 (true) ist, wird der Befehl vorhandene Dateien überschreiben. Wenn dieser Parameter weggelassen wird oder 0 (false) ist, wird der Befehl vorhandene Dateien nicht überschreiben.

Dieser Parameter kann ein Ausdruck sein. Es können auch Ausdrücke angegeben werden, die True oder False zurückgeben (weil True und False intern in 1 und 0 aufgelöst werden).

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 verschoben werden konnten, und bei Erfolg auf 0. Wenn die Quelldatei eine einzelne nicht vorhandene Datei (ohne Platzhalter) ist, wird ErrorLevel auch auf 0 gesetzt. Um diesen Zustand zu erkennen, können Sie FileExist() oder IfExist auf die Quelldatei anwenden, bevor Sie sie verschieben.

Im Gegensatz zu FileCopy wird das Verschieben einer Datei auf sich selbst immer als Erfolg angesehen, selbst wenn der Überschreibmodus nicht aktiv ist.

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

Bemerkungen

FileMove verschiebt nur Dateien. Wenn Sie stattdessen den kompletten Inhalt eines Ordners (also alle Dateien und Unterordner) verschieben wollen, können Sie das Beispiel ganz unten verwenden. Mit FileMoveDir kann ein einzelner Ordner verschoben oder umbenannt werden.

Die Operation wird auch dann fortgesetzt, wenn Fehler auftreten.

Dieser Befehl ist zwar in der Lage, Dateien auf einen anderen Datenträger zu verschieben, aber die Operation dauert wesentlich länger als das Verschieben von Dateien auf denselben Datenträger. Das liegt daran, dass das Verschieben von Dateien auf denselben Datenträger quasi dem Umbenennen von Dateien entspricht, was bedeutend schneller ist.

FileCopy, FileCopyDir, FileMoveDir, 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 von QuelleMuster in dem ZielOrdner und
; gibt die Anzahl an Dateien/Ordnern zurück, die nicht verschoben werden konnten. Diese Funktion benötigt [v1.0.38+],
; weil sie Modus 2 von FileMoveDir verwendet.
{
    if (Überschreiben = 1)
        Überschreiben := 2  ; Siehe FileMoveDir zum Thema Modus 1 vs 2.
    ; Zuerst alle Dateien verschieben (aber nicht die Ordner):
    FileMove, %QuelleMuster%, %ZielOrdner%, %Überschreiben%
    FehlerAnzahl := ErrorLevel
    ; Jetzt alle Ordner verschieben:
    Loop, %QuelleMuster%, 2  ; 2 bedeutet "nur Ordner".
    {
        FileMoveDir, %A_LoopFileFullPath%, %ZielOrdner%\%A_LoopFileName%, %Überschreiben%
        FehlerAnzahl += ErrorLevel
        if ErrorLevel  ; Jeden Problemordner mit Namen anzeigen.
            MsgBox %A_LoopFileFullPath% kann nicht nach %ZielOrdner% verschoben werden.
    }
    return FehlerAnzahl
}