HowTo: Verzeichnis automatisch täglich löschen

Nachdem ich in meinem HowTo des PDF-Creator erklärt habe, wie man PDF-Dateien kostenlos und automatisch erstellt, musste eine Lösung her, wie ich das Verzeichnis mit den Unterordnern und den PDF-Dateien automatisch und täglich löschen konnte.

Windows liefert mit seiner Kommandozeile der CMD, eine einfache und kompetente Lösung: Mit dem FOR-Befehl (for Schleife) kann man einen Befehl für jede einzelne Datei für einen Satz von Dateien ausführen.

Mehr Informationen, alle Parameter sowie Hilfestellung zum FOR Befehl können mit FOR /? aufgerufen werden:

FOR Befehl in der Windows Shell CMD

1. Befehl RMDIR

Um nun in unseren Beispiel-Verzeichnis D:\Ordner alle Unterordner löschen zu können, benötigen wir den Befehl RMDIR mit den Parametern /S /Q. Diese Parameter bewirken folgendes:

/S  Löscht alle Verzeichnisse und Dateien im angegebenen Verzeichnis zusätzlich zu dem Verzeichnis selbst. Wird verwendet, um ganze Verzeichnisbäume zu löschen.

/Q  Keine Nachfrage, ob die Verzeichnisbäume mit /S entfernt werden sollen.

Mehr Informationen, alle Parameter sowie Hilfestellung zum RMDIR Befehl können mit RMDIR /? aufgerufen werden.

2. Befehl DEL

Das auch in unseren Beispiel-Verzeichnis D:\Ordner alle darin befindlichen Dateien gelöscht werden, benötigen wir den Befehl DEL mit den Parameter /Q. Dieser Parameter bewirkt, dass es keine Rückfrage beim löschen geben wird:

/Q  Keine Rückfrage bei Verwendung globaler Platzhalter.

Alle Parameter sowie Hilfestellung zum DEL Befehl können mit DEL /? aufgerufen werden.

3. Script erstellen

Um den FOR-Befehl in einem Batchprogramm zu verwenden, muss die %%Variable
statt %Variable angegeben werden. Die Groß-/Kleinschreibung ist bei Variablennamen zu beachten, %i und %I sind nicht identisch.

Unser Code für unser Script muss dann wie folgt aussehen:

FOR /D %%I IN (D:\Ordner\*) DO RMDIR /S /Q "%%I"
FOR /D %%I IN (D:\Ordner\) DO DEL /Q "%%I"
echo "" > D:\Ordner\Das_Verzeichnis_wird_taeglich_geloescht

Wichtig ist die Reihenfolge der Befehle. Der echo Befehl ist nicht wichtig für die Funktion, dennoch habe ich ihn mit eingebaut, um jeden der dieses Verzeichnis öffnet, wissen zu lassen, dass dieses täglich gelöscht wird.

Um nun ein Script zu erstellen, genügt es den Code mit einem einfachen Text-Editor (Windows Bordmittel Notepad) den Code unter der Dateiendung *.cmd zu speichern.

Das Script mit Notepad mit der Dateiendung *.cmd speichern

Zum testen, ob auch das Script funktioniert, kann dieses mit Doppelklick ausgeführt werden. Danach sollte man kontrollieren, ob das Verzeichnis auch gelöscht worden ist. War dies erfolgreich, können wir nun eine geplante Aufgabe erstellen, um das Script täglich ausführen zu lassen.

4. Aufgabenplanung

Dazu benötigen wir die in Windows enthaltene “Aufgabenplanung”. Diese öffnen wir am schnellsten, indem wir im Startmenü nach dem Begriff “Aufgabenplanung” suchen. Dort erstellen wir eine neue einfache Aufgabe:

Einfache Aufgabe erstellen

Die Trigger Angabe belassen wir auf täglich:

Aufgabentrigger

Und geben im nächsten Schritt die Zeitplanung an:

Zeitplanung

Als Aktion lassen wir ein Programm starten:

Aktion

Im nächsten Schritt tragen wir unser selbst erstelltes Script als Programm und ohne Argumente ein:

Programm starten

Danach muss der Assistent mit “Fertig Stellen” gespeichert werden.

Zusammenfassung

Nun wird unser Script ausgeführt und somit wir der Inhalt des Verzeichnisses täglich um 07:00 Uhr ohne Nachfrage gelöscht.


Teilen


Werbung



4 Kommentare

#945
am 06. August 2012 um 18:42 von Florian Zepf

Hallo habe dass an einem Ordner von mir versucht bekomms aber irgendwie nicht hin…CMD Feenster geht nur kurz auf und wieder zu….

FOR /C %%I IN (C:\Benutzer\Florian\Favoriten) DO RMDIR

diesen ordner möchte ich in bestimmten abständen löschen lassen…
fehlt noch irgendwas in dem script..???

Vielen Dank für die hilfe

Florian


#947
am 06. August 2012 um 20:02 von Johannes Sebald

Hallo Florian, mit der integrierten Windows PowerShell und dem Cmdlet Remove-Item kann man sehr einfach Unterverzeichnisse löschen, im Gegensatz zu der veralteten CMD (dieser Artikel ist auch schon älter und auch ich habe dazu gelernt :)).
Öffne dazu die PowerShell und trage folgendes ein:
Remove-Item -Force "C:\Benutzer\Florian\Favoriten\*"
Mehr Infos zu diesem PowerShell Cmdlet und allgemein zur PowerShell findest du hier: http://technet.microsoft.com/de-de/library/dd315401.aspx
Gruß Johannes


#996
am 18. September 2012 um 13:40 von Norman

Hallo, gibt es einen Parameter, der bestimmte Dateien auch auslässt= zb. web.config?

Ich habe das Problem, das dieses Script bis zum IIS 6 wunderbar läuft. Seit IIS 7 werden Konfigurationsparameter aber in dem konfiguriertem Verzeichnis abgelegt. Diese Konf Datei wird nun jedesmal mitgelöscht und der Zugriff aufs Verzeichnis funzt dann nicht mehr.

Hat jemand eine Idee wie man bestimmte Dateien auslassen kann?

Gruß Norman


#999
am 21. September 2012 um 21:17 von Johannes Sebald

Hallo Norman, mit dem PowerShell Cmd-Let Remove-Item und dem Parameter -exclude lassen sich einfach Dateitypen ausschließen. Mehr Infos dazu gibt’s im Microsoft TechNet.


Einen Kommentar hinterlassen

*


Werbung