Löschen Sie Dateien mit dem Taskplaner mithilfe von ForFiles

Löschen Sie Dateien mit dem Taskplaner mithilfe von ForFiles

Ich versuche, alle Ordner und Dateien jede Nacht mithilfe des Taskplaners zu löschen. In den Aktionen verwende ich den folgenden Befehl:

Programm/Skript: forfiles
Argumente:/S /P C:\Users\david\AppData\Roaming\Apple Computer\MobileSync\Backup /C "cmd /c if @isdir==TRUE rd /s /q @file"

Es werden keine Dateien oder Ordner gelöscht. Was fehlt mir in diesem Beispiel?

Dies scheint zu funktionieren, verursacht aber einen Fehler: /S /P "C:\Users\Sales\AppData\Roaming\Apple Computer\MobileSync\Backup" /C "cmd /c rd /s /q @file

Fehler:

C:\Users\david>forfiles /S /P "C:\Users\david\AppData\Roaming\Apple Computer\MobileSync\Backup"  /C "cmd /c rd /s /q @file

ERROR: The system cannot find the file specified.

C:\Users\david>

Antwort1

Warum durchsuchen Sie Unterverzeichnisse, wenn Sie vorhaben, alles mit „rd /s /q“ zu überschreiben?

Was dukönnte(wahrscheinlich) sehen werden, ist dies:

  1. für Dateienerstellt eine Liste mit zu bearbeitenden Dateien: sagen Sie ... "C:\Dieses" Und "C:\Dies\Das"
  2. Du erhältst "C:\Dieses" dir übergeben
  3. Du löschst "C:\Dieses" rekursiv
  4. Du erhältst "C:\Dies\Das" Ihnen übergeben.
  5. Beim Löschen wird eine Fehlermeldung angezeigt, da das Objekt nicht vorhanden ist.

Es kann aber auch noch ein anderer Umstand eintreten! Während der Aufzählung des Baumes kann ein Datei-Handle geöffnet sein, so dass beim Versuch, "C:\Dieses", "C:\Dies\Das" ist immer noch von forfiles offen gesperrt. Ich weiß nicht, ob forfiles geschrieben wurde, um dies zu umgehen, aber ich habesicherstoßen Sie beim Programmieren darauf.

Vorschlag: Entfernen Sie das /S ausfür Dateien(am besten) ODER fügen Sie „bla bla bla …“ hinzu.wenn vorhanden @file" bla bla bla (nicht das Beste).

verwandte Informationen