DeleteFile(file$[, t])
DeleteFile(file$[, callback, userdata, pattern$, matchdir])
file$
angegebene Datei oder das Verzeichnis.
Bitte beachten Sie, dass dieser Befehl standardmäßig ganze Verzeichnisse
rekursiv löscht. Es wird nicht geprüft, ob das angegebene Verzeichnis
leer ist oder nicht! Wenn Sie ein Verzeichnis angeben, wird
es mit allen Unterverzeichnissen und allen darin enthaltenen
Dateien gelöscht, es sei denn, dies wird ausdrücklich von Ihnen
verboten. Seien Sie also sehr vorsichtig mit diesem Befehl!
DeleteFile()
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 DeleteFile()
übergeben werden können.
Die folgenden Tabellenfelder werden von diesem Befehl erkannt:
Recursive:
DeleteFile()
in alle Unterverzeichnisse
und löscht sie, wenn file$
ein Verzeichnis angibt. Wenn Sie
dies nicht möchten, setzen Sie diesen Tag auf False
. (V9.0)
Force:
True
gesetzt ist, werden schreib- oder löschgeschützte
Dateien automatisch gelöscht, ohne vorher die Callback-Funktion
abzufragen. Beachten Sie, dass DeleteFile()
alle schreib- oder
löschgeschützten Dateien überspringt, wenn es keine Callback-Funktion
gibt und Force
auf False
(Voreinstellung) gesetzt ist. Die
Voreinstellung ist False
. (V9.0)
MustExist:
DeleteFile()
stillschweigend fehl, wenn
Sie eine Datei oder ein Verzeichnis angeben, welche/s nicht in
file$
existiert. In diesem Fall wird kein Fehler generiert.
Wenn DeleteFile()
stattdessen einen Fehler anzeigen soll, setzen
Sie diesen Tag auf True
. (V9.0)
Pattern:
DeleteFile()
nur die Dateien, die dem
angegebenen Muster entsprechen. Wenn Sie beispielsweise *.jpg
in Pattern
übergeben, werden nur Dateien gelöscht, die die
Dateierweiterung .jpg
verwenden. Natürlich macht die
Verwendung eines Filtermusters nur dann Sinn, wenn Sie in file$
ein Verzeichnis angeben. Beachten Sie, dass aus historischen
Gründen das in Pattern
angegebene Muster auch mit allen zu
löschenden Unterverzeichnissen abgeglichen wird. Wenn Sie das
nicht möchten, setzen Sie das Tabellen-Tag MatchDir
auf False
(siehe unten). Das in Pattern
angegebene Muster muss den Musterregeln
entsprechen, die in der Dokumentation des Befehls MatchPattern()
beschrieben sind. Siehe MatchPattern für Details. (V5.0)
MatchDir:
Pattern
angegebene Filtermuster
auch mit Unterverzeichnissen abgeglichen werden soll oder nicht.
Wenn dies auf True
gesetzt ist, rekursiert DeleteFile()
nur
in Unterverzeichnisse, die dem angegebenen Filtermuster entsprechen.
Wenn es auf False
gesetzt ist, rekursiert DeleteFile()
in alle
Unterverzeichnisse. Aus Kompatibilitätsgründen ist MatchDir
standardmäßig auf True
voreingestellt, aber meistens möchten
Sie hier False
übergeben, da es normalerweise keinen Sinn macht,
ein Dateimuster mit einem Verzeichnisnamen abzugleichen. Es
macht beispielsweise keinen Sinn, das obige Beispiel *.jpg
auch mit Verzeichnissen abzugleichen. (V5.0)
FailOnError:
DeleteFile()
fehl, wenn eine Datei oder
ein Verzeichnis nicht gelöscht werden kann. Sie können dieses
Verhalten ändern, indem Sie FailOnError
auf False
setzen. In
diesem Fall schlägt DeleteFile()
nicht fehl, wenn eine Datei
oder ein Verzeichnis nicht gelöscht werden kann. Stattdessen
wird Ihre Callback-Funktion, falls vorhanden, mit der Meldung
#DELETEFILE_FAILED
benachrichtigt und Ihre Callback-Funktion
muss DeleteFile()
mitteilen, wie es weitergehen soll (Wiederholen,
Fortsetzen, Abbrechen). Siehe unten, um zu erfahren, wie Sie
eine Callback-Funktion für DeleteFile()
einrichten. Beachten
Sie, dass FailOnError
nicht verwendet wird, wenn file$
nur
eine einzelne Datei ist. Es wird nur verwendet, wenn ganze
komplette Verzeichnisse oder mehrere Dateien mit Mustern gelöscht
werden. FailOnError
ist voreingestellt auf True
. (V9.0)
Async:
True
gesetzt ist, arbeitet DeleteFile()
im asynchronen
Modus. Das bedeutet, dass der Befehl sofort zurückkehrt und
Ihnen ein asynchroner Operationshandler übergibt. Sie können
dann diesen asynchronen 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 DeleteFile()
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:
UserTags:
Callback:
DeleteFile()
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 DeleteFile()
löschgeschützte Dateien
stillschweigend. Die Callback-Funktion erhält ein Argument,
eine Tabelle, die weitere Informationen enthält.
Die folgenden Callback-Typen sind verfügbar:
#DELETEFILE_UNPROTECT:
#DELETEFILE_UNPROTECT
wird aufgerufen,
wenn eine zu löschende Datei löschgeschützt ist. Diese Callback-Funktion
muss True
zurückgeben, wenn der Schutz der Datei aufgehoben
werden kann, oder False
, wenn der Schutz nicht aufgehoben werden
soll. Wenn Sie -1 zurückgeben, wird der Löschvorgang vollständig
abgebrochen.
Action:
#DELETEFILE_UNPROTECT
File:
UserData:
UserData
übergeben
haben (siehe unten).
(V2.0)
#DELETEFILE_STATUS:
#DELETEFILE_STATUS
sollte normalerweise False
zurückgeben. Wenn sie True
zurückgibt,
wird der Löschvorgang abgebrochen.
Action:
#DELETEFILE_STATUS
File:
UserData:
UserData
übergeben
haben (siehe unten).
(V2.0)
#DELETEFILE_FAILED:
FailOnError
auf False
gesetzt wurde (siehe oben). In diesem Fall wird die
Callback-Funktion vom Typ #DELETEFILE_FAILED
immer dann aufgerufen,
wenn ein Löschvorgang fehlgeschlagen ist. Es muss True
zurückgegeben
werden, um den Löschvorgang 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:
#DELETEFILE_FAILED
File:
UserData:
UserData
übergeben
haben (siehe unten).
(V9.0)
UserData:
UserData
können Sie ganz einfach Daten
an Ihre Callback-Funktion übergeben. Sie können in UserData
einen Wert beliebigen Typs 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. (V3.1)
Siehe auch CopyFile(), MoveFile(), Rename() und Exists().
DeleteFile("FooBar")Löscht die Datei (oder Verzeichnis) "FooBar" im aktuellen Verzeichnis.
Function p_DeleteCallback(msg) Switch msg.action Case #DELETEFILE_STATUS: DebugPrint("Now deleting", FilePart(msg.file)) Case #DELETEFILE_UNPROTECT: Return(SystemRequest("Hollywood", FilePart(msg.file) .. " is delete protected!\nDo you want me to unprotect it?", "Yes|No")) EndSwitch Return(False) EndFunction DeleteFile("TestDir", {Callback = p_DeleteCallback})Demonstriert die Verwendung einer Callback-Funktion. Es löscht das Verzeichnis "TestDir" aus dem aktuellen Verzeichnis und gibt Informationen über die Datei aus, die gerade gelöscht wird.