Jump to content

Löschen älter als mit Ausnahmen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

hab seit langem noch mal eine Frage.

 

Ich möchte gerne den Inhalt eines Ordners (Dateien und Ordner), die älter als X-Tage sind, mit einer Batch-Datei löschen.

Dazu habe ich folgende Batch-Datei erstellt:

 

forfiles /P C:\Test /S /D -5 /C "cmd /C del /s /q @file"
forfiles /P C:\Test /D -5 /C "cmd /C IF @isdir == TRUE rd /S /Q @path"

 

Das funktioniert soweit auch ganz gut. Nun möchte ich aber einen bestimmten Ordner darin ausklammern.

 

Vielleicht kann mir da jemand helfen, wie ich das umsetzen kann?

 

Vielen Dank vorab und viele Grüße

Fränky

 

 

 

Link zu diesem Kommentar
vor 27 Minuten schrieb Fraenky:

Hallo und vielen Dank für Deine schnelle Antwort.

Wenn ich das richtig gelesen habe, kann Delage aber nur leere Ordner löschen, und keine mit Inhalt?

 

Gruß

Fränky

So halb, das Tool kann durchaus Dateien löschen, dann leere Ordner entfernen oder aber die Ordnerstruktur unberührt lassen und nur die Inhalte löschen, je nach konfiguriertem Alter oder komplett eben je nachdem wie du das haben willst.

 

Hier stehts genauer: https://www.horstmuc.de/win/delage-de.htm

 

Grüsse

 

Gulp

bearbeitet von Gulp
Korrektur
Link zu diesem Kommentar

Hi,

 

wenn es auch PowerShell sein darf, wäre "Get-ChildItem" recht simpel zum Auffinden. Das Ergebnis muss dann nur noch gelöscht werden.

Get-ChildItem -Recurse | ? { $_.LastWriteTime -gt $(Get-Date).AddDays(-5) -and $_.FullName -inotmatch "\\Ordner" }

Gruß

Jan

bearbeitet von testperson
Link zu diesem Kommentar

Guten Morgen und nochmals vielen Dank für Eure Antworten und die Hilfe.

 

@Gulp Ich habe mal eine Test mit Delage gemacht. In einem Testordner lieben Dateien, sowie Unterordner. Dazu habe ich folgende Syntax verwendet:

 

delage64 "C:\Test\*.*" 10 /includeRHS /recurse /subonly /rd

 

Das hat insoweit funktioniert, dass alle Ordner geleert wurden, und anschließend auch dann die leeren Unterordner gelöscht wurden.

Die Dateien, die dierekt im Ornder Test lagen, blieben allerdings unberührt :hmmm: .

 

Also habe ich das Script so abgeändert:

 

delage64 "C:\Test\*.*" 5 /includeRHS /recurse /subonly /rd
delage64 "C:\Test\*.*" 5 /includeRHS

 

Damit konnte ich dann den kompletten Ordner leeren.

 

Mir ist allerdings noch unklar, wie ich einen Ordner davon ausschließen kann, egal, wie alt die Dateien darin sind.

 

Gruß

Fränky

 

 

 

 

 

 

 

 

bearbeitet von Fraenky
Link zu diesem Kommentar

Guten Morgen,

 

@NilsK Danke auch für den Tip mit RoboCopy. Ich habe es jetzt auf die Schnelle so gelöst:

 

@echo off

cd\

mkdir C:\Sich
mkdir C:\Sich-2

robocopy C:\Test\01-Wichtig C:\Sich\01-Wichtig /R:10 /W:30
robocopy C:\Test C:\Sich-2 /E /MOVE /MINAGE:5 /R:10 /W:10

rmdir C:\Sich-2 /s /q

rmdir C:\Test\01-Wichtig /s /q

robocopy C:\Sich\01-Wichtig  C:\Test\01-Wichtig /R:10 /W:30

rmdir C:\Sich /s /q

exit

 

Lässt sich vielleicht auch eleganter lösen, aber funktioniert.

 

Vielen Dank und viele Grüße

Fränky

Link zu diesem Kommentar

Hallo,

zwar etwas spät gelesen, aber vielleicht funktioniert folgendes für Dich:

 

forfiles /c "cmd /c if not @fname==\"ROM\" rd /S /Q @file"

"ROM" ist als Beispiel ein Ordner der Nicht angetastet wird. Der Rest müsstest du dir halt zusammenbauen. Bitte erstmals testen und nicht gleich in der prod. Umgebung abfeuern ;)

bearbeitet von speer
Link zu diesem Kommentar

Guten Morgen und Danke auch an speer für Deinen Beitrag.

 

Ich habe es jetzt mit RoboCopy gelöst. Ein kleines Problem habe ich allerdings noch. Ich habe nicht bedacht, dass es vorkommt, dass jemand Dateien in diesen Ordner legt, die er vielleich am nächsten Tag braucht, diese aber vom Erstellungs- oder auch Änderungsdatum schon älter sind, als die Tage, die ich angebe. Gibt es irgendwie die Möglichkeit, das Ablagedatum der Datein dieses Ordners zu ermitteln?

 

Danke und Gruß

Fränky

Link zu diesem Kommentar

Moin,

 

hier bist du an einer Stelle, die sich mit einfachen Mitteln kaum sinnvoll lösen lässt. Man könnte jetzt darüber sinnieren, dass es einen Unterschied gibt, ob eine Datei an das Ziel kopiert wurde oder ob sie dorthin verschoben wurde (was hier vermutlich die Ursache ist). Danach wird man aber wahrscheinlich den nächsten Punkt finden.

 

Die Mechanismen des "rohen" Dateisystems sind oft ungeeignet, um darauf Workflows von geschäftlicher Bedeutung abzubilden. Vielleicht ist hier ein grundsätzlich anderes Vorgehen empfehlenswert.

 

Gruß, Nils

 

Link zu diesem Kommentar

Wie Nils schon geschrieben hat, lässt sich das nicht zuverlässig mit den vom Dateisystem bereitgestellten Informationen lösen.

 

Es sollte sich aber einigermassen leicht umsetzen lassen mit einer kleinen Datenbank. Falls Du ein Script willst, könntest Du PowerShell nehmen und die Daten in einer SQLite-Datenbank ablegen:

 

In einem ersten Schritt geht das Script alle Dateien durch und trägt die, die noch nicht in der Datenbank vorhanden sind, ein mit Dateiname und aktuellem Datum. Dann sucht es in der Datenbank alle Dateien, die schon länger als X Tage da sind und löscht diese sowohl auf dem Dateisystem als auch in der Datenbank.

Link zu diesem Kommentar

Guten Morgen zusammen, und vielen Dank noch mal für die vielen Antworten.

 

Ja, stimmt. Lässt sich wohl nicht so ganz leicht umsetzen. Die Idee mit der DB ist gut, der Aufwand ist allerdings für meinen Zweck etwas groß.

Über eine andere Vorgehensweise nachzudenken, ist hier, glaube ich, das Richtige.

 

Viele Grüße

Fränky

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...