FileMove

Verschiebt oder benennt eine oder mehrere Dateien um.

FileMove, QuelleMuster, ZielMuster , Überschreiben

Parameter

QuelleMuster

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

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

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 verschoben werden konnten, und bei Erfolg auf 0. Allerdings wird ErrorLevel auch 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 verschieben.

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 FileMoveDir kann ein einzelner Ordner verschoben oder umbenannt werden.

Die Operation wird nicht gestoppt, wenn Fehler auftreten.

Obwohl dieser Befehl 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, 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 gemäß QuelleMuster in den ZielOrdner und
; gibt die Anzahl der Dateien/Ordner 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 für Modus 2 statt 1.
    ; 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 namentlich anzeigen.
            MsgBox %A_LoopFileFullPath% kann nicht nach %ZielOrdner% verschoben werden.
    }
    return FehlerAnzahl
}