
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:
- für Dateienerstellt eine Liste mit zu bearbeitenden Dateien: sagen Sie ... "C:\Dieses" Und "C:\Dies\Das"
- Du erhältst "C:\Dieses" dir übergeben
- Du löschst "C:\Dieses" rekursiv
- Du erhältst "C:\Dies\Das" Ihnen übergeben.
- 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).