Für die Durchführung von Sicherungen benötige ich ein Batch-Skript, mit dem ich Dateien in einem bestimmten Verzeichnis löschen kann, die älter sind als beispielsweise 3 Tage. Dieses Skript wird als geplante Aufgabe festgelegt, die jeden Tag zu einer bestimmten Zeit ausgeführt wird.
windows-server-2008-r2
batch-file
Chiggins
quelle
quelle
Antworten:
Wenn Powershell akzeptabel ist (sollte es sein, da es auf Server 2008+ standardmäßig aktiviert ist), versuchen Sie Folgendes:
Quelle hier .
quelle
Remove-Item $File -whatif | out-null
. Um als Schedule-Task ausgeführt zu werden, sollte der Job den vollständigen Pfad zu Powershell.exe mit Ihrem Skript als Argument angeben.Wo
-5
ist das Alter der Dateien, die Sie löschen möchten (in diesem Fall 5 Tage oder älter)? Dieses Skript löscht.rar
Dateien. Löschen-m *.rar
Sie das, wenn Sie einen Dateityp löschen möchten.quelle
Wenn Sie darauf bestehen, Batch-Dateien zu verwenden, ist Robocopy.exe Ihre Antwort. Es ist schnell (Multithread) und sehr robust. Für Ihr Szenario können Sie Folgendes als Leitfaden verwenden:
Es gibt eine lange Liste von Optionen, bitte Robocopy /? um sie alle zu sehen. Sie können es sogar verwenden, um inkrementelle Sicherungen durchzuführen, zu planen, Sicherungsprofile zu erstellen usw.
quelle
Ich benutze dafür gerne DelEn.exe .
Delen - DELete ENhanced - ist eine aufgemotzte Version von DEL. Es unterstützt erweiterte Platzhalter und übergeordnete Verzeichnisse sowie Filter für Datum, Uhrzeit und Größe. Dateien können vom Löschen ausgeschlossen werden.
quelle
Sie könnten sich Horst Schaeffers DelAge32 ansehen:
http://home.mnet-online.de/horst.muc/wbat32.htm#top
Ihr Befehl kann so einfach sein wie:
Ich habe diesen Befehl als geplante Aufgabe ausgeführt.
quelle
Dies ist ein Powershell-Skript, das ich geschrieben habe, um das zu tun, was Sie wollen - es macht auch ein bisschen mehr. Ich benutze es, um Protokolle und andere temporäre Dateien zu löschen.
purge-dem-logs.cmd
purgelogs.ps1:
quelle
Dies funktioniert nicht für Remotecomputer. Administratoren müssen mehrere Computer verwalten. Im Folgenden finden Sie das Skript, mit dem Sie Ordner auf mehreren Remotecomputern löschen können, ohne sich bei ihnen anmelden zu müssen.
Das folgende Skript löscht Ordner, die älter als 15 Tage sind. Sie können den Parameter $ days jedoch ändern.
D $ \ Programme (x86) \ Research In Motion \ BlackBerry Enterprise Server \ Logs ist der UNC-Pfad für den Blackberry Log-Ordner. Sie können das Verzeichnis ändern, in dem sich Ihre Protokolle / Ordner befinden.
Listen Sie alle Ihre Servernamen in der Datei servers.txt auf, die sich im selben Verzeichnis wie dieses Skript befinden sollte.
Speichern Sie das Skript als .ps1 und führen Sie es aus. Sie können es über eine Batch-Datei planen. Auf diese Weise müssen Sie am Anfang des Skripts den Befehl Verzeichnis ändern hinzufügen.
Habe Spaß.
quelle
Als alternativer Ansatz: Anstatt sich darauf zu verlassen, das Dateisystem abzufragen, um die Erstellungszeiten für Dateien zu ermitteln (und dieselben Dateien über mehrere Tage hinweg zu erfassen, bis sie ablaufen), können Sie die Datei zum Zeitpunkt der Erstellung einem eigenen Index hinzufügen. Der Index kann möglicherweise so einfach sein wie eine Datei, die nach dem Erstellungsdatum benannt ist und an einem bekannten Speicherort mit einer Datei pro Zeile gespeichert ist.
Wenn Sie eine Multithread- / Multiprozess-App haben, die Dateien erstellt, möchten Sie möglicherweise, dass Ihr Index komplexer behandelt wird.
Der Vorteil wäre, dass Sie immer eine relativ einfach verarbeitete Liste von Dateien haben, die an einem bestimmten Tag erstellt wurden und über die Sie iterieren können, anstatt das Dateisystem immer wieder nach Details fragen zu müssen.
(Dies würde davon abhängen, dass die App und die Dateierstellung von Ihnen und nicht von Dritten verwaltet werden.)
quelle