Bezeichnung
MoveFile -- verschiebt eine Datei oder ein Verzeichnis (V7.1)
Übersicht
MoveFile(src$, dst$[, t])
Frühere syntax
MoveFile(src$, dst$[, func, userdata])
Beschreibung
Dieser Befehl verschiebt die in src$ angegebene Datei oder Verzeichnis in die in dst$ angegebene Datei oder Verzeichnis. Beachten Sie, dass dst$ nicht existieren darf oder MoveFile() wird fehlschlagen. Außerdem darf src$ nicht das Stammverzeichnis eines Laufwerkes sein, da dieses offensichtlich nirgendwohin verschoben werden kann.

Das Verschieben von Dateien (oder Verzeichnissen) auf dem gleichen Laufwerk ist wirklich schnell und braucht fast keine Zeit. Beim Verschieben von Dateien und Verzeichnissen von einem Laufwerk auf ein anderes muss MoveFile() zuerst die Dateien kopieren und in einem zweiten Schritt vom Original-Laufwerk löschen. Dieser Vorgang ist viel langsamer als das Verschieben auf dem gleichen Laufwerk. Deshalb können Sie eine Callback-Funktion angeben, die den Fortschritt dieser Operation überwacht.

MoveFile() unterstützt mehrere optionale Argumente. Vor Hollywood 9.0 mussten diese als optionale Parameter übergeben werden (siehe oben). Seit Hollywood 9.0 wird jedoch empfohlen, die neue Syntax zu verwenden, die ein einzelnes optionales Tabellenargument hat, mit dem ein oder mehrere optionale Argumente an MoveFile() übergeben werden können.

Die folgenden Tabellenfelder werden von diesem Befehl verstanden:

Force:
Wenn dieser Tag auf True gesetzt ist, werden schreib- oder löschgeschützte Dateien automatisch gelöscht, ohne vorher die Callback-Funktion abzufragen. Beachten Sie, dass MoveFile() alle schreib- oder löschgeschützten Dateien überspringt, anstatt sie zu löschen, wenn es keine Callback-Funktion gibt und Force auf False (Voreinstellung) gesetzt ist. Beachten Sie auch, dass Force nur verwendet wird, wenn MoveFile() tatsächlich Dateien löschen muss, d.h. wenn Dateien von einem Laufwerk auf ein anderes verschoben werden. Das Verschieben von Dateien auf demselben Laufwerk erfordert kein Löschen. Die Voreinstellung ist False. (V9.0)

BufferSize:
In diesem Tabellenfeld kann die Puffergröße eingestellt werden, die beim Kopieren von Dateien verwendet werden soll. Der hier übergebene Wert muss in Bytes angegeben werden. Voreingestellt ist 16384, also 16 Kilobytes. Beachten Sie, dass BufferSize nur verwendet wird, wenn MoveFile() tatsächlich Dateien kopieren muss, d.h. wenn Dateien von einem Laufwerk auf ein anderes verschoben werden. Das Verschieben von Dateien auf demselben Laufwerk beinhaltet kein Kopieren. (V9.0)

FailOnError:
Standardmäßig schlägt MoveFile() fehl, wenn eine Datei oder ein Verzeichnis nicht kopiert oder gelöscht werden kann. Sie können dieses Verhalten ändern, indem Sie FailOnError auf False setzen. In diesem Fall schlägt MoveFile() nicht fehl, wenn eine Datei oder ein Verzeichnis nicht kopiert oder gelöscht werden kann. Stattdessen wird Ihre Callback-Funktion, falls vorhanden, mit den Meldungen #MOVEFILE_COPYFAILED und #MOVEFILE_DELETEFAILED benachrichtigt und Ihre Callback-Funktion muss MoveFile() mitteilen, wie es weitergehen soll (Wiederholen, Fortfahren, Abbrechen). Siehe unten, um zu erfahren, wie man eine Callback-Funktion für MoveFile() einrichtet. Beachten Sie, dass FailOnError nur verwendet wird, wenn MoveFile() tatsächlich Dateien kopieren und löschen muss, d.h. wenn Dateien von einem Laufwerk auf ein anderes verschoben werden. Das Verschieben von Dateien auf demselben Laufwerk erfordert kein Kopieren oder Löschen. FailOnError ist voreingestellt auf True. (V9.0)

Async:
Wenn dies auf True gesetzt ist, arbeitet MoveFile() im asynchronen Modus. Das bedeutet, dass der Befehl sofort zurückkehrt und Ihnen ein asynchroner Operationshandler übergibt. Sie können dann diesen asynchroner Operationshandler verwenden, um den Vorgang abzuschließen, indem Sie wiederholt ContinueAsyncOperation() aufrufen, bis True zurückgegeben wird. Dies ist sehr nützlich, z.B. für die Anzeige eines Fortschrittsbalken oder ähnlichem. Indem Sie MoveFile() in den asynchronen Modus versetzen, ist es Ihrem Skript leicht möglich, während der Verarbeitung des Vorgangs etwas anderes zu tun. Siehe ContinueAsyncOperation für Details. Voreingestellt ist False. (V9.0)

Adapter:
Mit diesem Tag können Sie einen oder mehrere Dateisystemadapter angeben, die die Operation ausführen. Dies muss auf eine Zeichenkette gesetzt werden, die den Namen eines oder mehrerer Adapter enthält. Standardmäßig wird der Adapter verwendet, der mit SetDefaultAdapter() gesetzt wurde. Siehe Lader und Adapter für Details. (V10.0)

UserTags:
Dieser Tag kann verwendet werden, um zusätzliche Daten anzugeben, die an den Dateisystemadapter übergeben werden sollen. Wenn Sie diesen Tag verwenden, müssen Sie ihn auf eine Tabelle mit Schlüssel-Wert-Paaren setzen, die die zusätzlichen Daten enthalten, die an Plugins übergeben werden sollen. Siehe Benutzer-Tags für Details. (V10.0)

Callback:
Zur genaueren Steuerung des Löschvorgangs können Sie eine Callback-Funktion angeben, die bei verschiedenen Gelegenheiten aufgerufen wird. MoveFile() ruft sie beispielsweise von Zeit zu Zeit auf, damit Sie einen Fortschrittsbalken aktualisieren können. Sie wird auch aufgerufen, wenn eine Datei löschgeschützt ist, um Sie zu fragen, wie es weitergehen soll. Wenn keine Callback-Funktion vorhanden ist, überspringt MoveFile() löschgeschützte Dateien stillschweigend. Die Callback-Funktion erhält ein Argument, eine Tabelle, die weitere Informationen enthält.

Beachten Sie, dass die Callback-Funktion nur aufgerufen wird, wenn Dateien zwischen Laufwerken verschoben werden. Das Verschieben von Dateien auf demselben Laufwerk kann sofort erfolgen und führt nicht zu einem Aufruf der Callback-Funktion. Beachten Sie auch, dass Dateien mit Löschschutz nicht gelöscht werden, sondern nur an den neuen Speicherort kopiert werden, ohne die alte Datei zu löschen.

Die folgenden Callback-Typen sind verfügbar:

#MOVEFILE_UNPROTECT:
Die Callback-Funktion vom Typ #MOVEFILE_UNPROTECT wird aufgerufen, wenn MoveFile() eine löschgeschützte Datei löschen muss. Die Parametertabelle für diesen Callback-Typ enthält die folgenden Felder:

Action:
#MOVEFILE_UNPROTECT

File:
Enthält den den vollständigen Pfad der Datei, die löschgeschützt ist.

UserData:
Enthält den Wert, den Sie im Tabellenfeld UserData übergeben haben (siehe unten).

Diese Callback-Funktion muss True zurückgeben, wenn es in Ordnung ist, die Datei auf ungeschützt zu setzen, oder False, wenn sie nicht ungeschützt sein soll. Wenn Sie -1 zurückgeben, wird der Verschiebevorgang komplett abgebrochen.

#MOVEFILE_DELETE:
Dieser Callback wird immer dann ausgeführt, wenn eine Datei gelöscht wird. Die Callback-Funktion vom Typ #MOVEFILE_DELETE sollte normalerweise False zurückgeben. Wenn True zurückgegeben wird, bricht MoveFile() den gesamten Vorgang ab.

Action:
#MOVEFILE_DELETE

File:
Enthält den vollständigen Pfad der Datei, die als nächstes gelöscht werden soll.

UserData:
Enthält den Wert, den Sie im Tabellenfeld UserData angegeben haben (siehe unten).

#MOVEFILE_COPY:
Dieser Callback wird aufgerufen, während MoveFile() Dateien kopiert. Die Callback-Funktion vom Typ #MOVEFILE_COPY sollte normalerweise False zurückgeben. Wenn True zurückgegeben wird, bricht MoveFile() den gesamten Vorgang ab.

Action:
#MOVEFILE_COPY

Source:
Enthält den vollständigen Pfad der Datei, die gerade kopiert wird (Quelle).

Destination:
Enthält den vollständigen Pfad der Datei, die gerade kopiert wird (Ziel).

Copied:
Enthält die Anzahl der Bytes, die bereits kopiert wurden.

Filesize:
Enthält die Dateigröße der Quelldatei.

UserData:
Enthält den Wert, den Sie im Tabellenfeld UserData angegeben haben (siehe unten).

#MOVEFILE_DELETEFAILED:
Dieser Callback kann nur aufgerufen werden, wenn der Tag FailOnError auf False gesetzt wurde (siehe oben). In diesem Fall wird die Callback-Funktion vom Typ #MOVEFILE_DELETEFAILED immer dann aufgerufen, wenn ein Löschvorgang fehlgeschlagen ist. Es muss True zurückgegeben werden, um den gesamten Vorgang abzubrechen, False, um fortzufahren, obwohl ein Fehler aufgetreten ist, oder -1, um den gerade fehlgeschlagenen Löschvorgang erneut zu versuchen. Die folgenden Felder werden im Tabellenparameter gesetzt, der an Ihre Callback-Funktion übergeben wird:

Action:
#MOVEFILE_DELETEFAILED

File:
Enthält den vollständigen Pfad der Datei, die nicht gelöscht werden konnte.

UserData:
Enthält den Wert, den Sie im Tabellenfeld UserData angegeben haben (siehe unten).

(V9.0)

#MOVEFILE_COPYFAILED:
Dieser Callback kann nur aufgerufen werden, wenn der Tag FailOnError auf False gesetzt wurde (siehe oben). In diesem Fall wird die Callback-Funktion vom Typ #MOVEFILE_COPYFAILED immer dann aufgerufen, wenn ein Kopiervorgang fehlgeschlagen ist. Es muss True zurückgegeben werden, um den gesamten Vorgang abzubrechen, False, um fortzufahren, obwohl ein Fehler aufgetreten ist, oder -1, um den gerade fehlgeschlagenen Kopiervorgang erneut zu versuchen. Die folgenden Felder werden im Tabellenparameter gesetzt, der an Ihre Callback-Funktion übergeben wird:

Action:
#MOVEFILE_COPYFAILED

Source:
Enthält den vollständigen Pfad der Datei, die gerade kopiert wird (Quelle).

Destination:
Enthält den vollständigen Pfad der Datei, die gerade geschrieben wird (Ziel).

UserData:
Enthält den Wert, den Sie im Tabellenfeld UserData angegeben haben (siehe unten).

(V9.0)

UserData:
Dieses Feld kann verwendet werden, um Ihrer Callback-Funktion einen beliebigen Wert zu übergeben. Der hier angegebene Wert wird bei jedem Aufruf an Ihre Callback-Funktion übergeben. Dies ist nützlich, wenn Sie vermeiden möchten, mit globalen Variablen zu arbeiten. Mit dem Tag UserData können Sie ganz einfach Daten an Ihre Callback-Funktion übergeben. Sie können in UserData einen beliebigen Wert angeben. Als Benutzerdaten können Zahlen, Zeichenketten, Tabellen und sogar Funktionen übergeben werden. Ihre Callback-Funktion erhält diese Daten im Feld UserData in der ihm übergebenen Tabelle.

Siehe auch CopyFile(), DeleteFile(), Rename() und Exists().

Eingaben
src$
die zu verschiebende Quelldatei oder -verzeichnis
dst$
Zieldatei oder -verzeichnis; darf nicht vorhanden sein
t
optional: Tabelle mit zusätzlichen Optionen (siehe oben) (V9.0)
Beispiel
MoveFile("image.png", "images/image.png")
Verschiebt die Datei "image.png" unter Beibehaltung von ihrem Namens in das Unterverzeichnis "images".

Navigation zeigen