FileMove

Verschiebt eine oder mehrere Dateien, oder benennt sie um.

FileMove, Quellmuster, Zielmuster , Flag

Parameter

Quellmuster

Der Name einer einzelnen Datei oder eine musterbasierte Suche wie C:\Temp\*.tmp. Quellmuster wird im A_WorkingDir-Verzeichnis vermutet, wenn kein absoluter Pfad angegeben ist.

Zielmuster

Name oder Muster des Ziels, das im A_WorkingDir-Verzeichnis vermutet wird, wenn kein absoluter Pfad angegeben ist. Die folgenden funktional 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\*.*
Flag

(Optional) Dieser Parameter bestimmt, ob bereits vorhandene Dateien überschrieben werden dürfen:

0 = (Standard) vorhandene Dateien nicht überschreiben
1 = vorhandene Dateien ü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).

ErrorLevel

[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, wendet man IfExist oder FileExist() auf die Quelldatei an, bevor man sie verschiebt.

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.

Siehe auch

FileCopy, FileCopyDir, FileMoveDir, FileDelete

Beispiele

FileMove, C:\Meine Dokumente\Liste1.txt, D:\Backup\  ; Verschiebt die Datei, ohne sie umzubenennen.
FileMove, C:\Datei vorher.txt, C:\Datei nachher.txt  ; Benennt eine Datei um.
FileMove, C:\Ordner1\*.txt, D:\Neuer Ordner\*.bkp  ; Verschiebt und ändert die Dateiendungen.
; Das folgende Beispiel 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(Quellmuster, Zielordner, Überschreiben = false)
; Verschiebt alle Dateien und Ordner vom Quellmuster 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, %Quellmuster%, %Zielordner%, %Überschreiben%
    Fehleranzahl := ErrorLevel
    ; Jetzt alle Ordner verschieben:
    Loop, %Quellmuster%, 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
}