Bezeichnung
DeleteFile -- löscht eine Datei oder ein Verzeichnis
Übersicht
DeleteFile(file$[, t])
Frühere syntax
DeleteFile(file$[, callback, userdata, pattern$, matchdir])
Beschreibung
Löscht die in 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:
Standardmäßig rekursiert 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:
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 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:
Standardmäßig schlägt 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:
In diesem Tabellenfeld können Sie ein Filtermuster übergeben. In diesem Fall löscht 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:
Dieses Tabellenfeld gibt an, ob das in 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:
Standardmäßig schlägt 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:
Wenn dies auf 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:
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. 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:
Die Callback-Funktion vom Typ #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:
Enthält die löschgeschützte Datei, deren Schutz aufgehoben werden soll (vollständiger Pfad).

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

(V2.0)

#DELETEFILE_STATUS:
Dieser Callback wird immer dann ausgeführt, wenn eine Datei gelöscht wird. Dies ist beispielsweise nützlich, um einen Fortschrittsbalken zu aktualisieren. Die Callback-Funktion vom Typ #DELETEFILE_STATUS sollte normalerweise False zurückgeben. Wenn sie True zurückgibt, wird der Löschvorgang abgebrochen.

Action:
#DELETEFILE_STATUS

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 übergeben haben (siehe unten).

(V2.0)

#DELETEFILE_FAILED:
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 #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:
Enthält den vollständigen Pfad der Datei, die nicht gelöscht werden konnte.

UserData:
Enthält den Wert, den Sie im Tabellenfeld UserData übergeben 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 die Arbeit mit globalen Variablen vermeiden wollen. Mit dem Tag 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().

Eingaben
file$
Dateiname oder Verzeichnis, welches gelöscht werden soll
t
optional: Tabelle mit weiteren Optionen (siehe oben) (V9.0)
Beispiel
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.

Navigation zeigen