Jump to content
Fraenky

Löschen älter als mit Ausnahmen

Recommended Posts

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

 

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

Edited by Gulp
Korrektur

Share this post


Link to post
Share on other sites

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

Edited by testperson

Share this post


Link to post
Share on other sites

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

 

 

 

 

 

 

 

 

Edited by Fraenky

Share this post


Link to post
Share on other sites

Je nach Ordnerstruktur kann das schwierig werden und mehrere nacheinander oder gleichzeitig gestartete Instanzen notwendig machen ........

 

Grüsse

 

Gulp

 

 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ;)

Edited by speer

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...