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.