Jump to content

Datenverzeichnis nach Datum aufräumen (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

 

Ich möchte ein Verzeichnis nach Datum aufräumen (mit Ausnahmen), und zwar aufräumen = löschen.

 

Unterhalb von D:\Daten exisitiert eine Ablage

d:\daten\AbtA\MitarbeiterA

d:\daten\AbtA\MitarbeiterB

d:\daten\Projekt1\Planung

d:\daten\Projekt1\Phase1

...

 

Alles unterhalb von d:\Daten soll nach Zeitablauf gelöscht werden (z.B. 90 Tage), mit Ausnahmen, z.B. das Verzeichnis d:\daten\Projekt1\Planung soll ewig leben wie auch d:\daten\AbtA\MitarbeiterB

 

Ich dachte erst an was wie

$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}

aber das putzt gnadenlos alles ab, auch die priviligierten Verzeichnisse.

 

Wie setzt man einen "Filter" um, dass eben (z.B.) d:\daten\Projekt1\Planung immer bleibt?

 

Ciao

Link zu diesem Kommentar

Ich bin halt unsicher, was wo wie geht.

Für Linux-Shellscripte kann ich hier im Haus jemand fragen, aber Windows-technisch bin ich hier allein auf weiter Flur.

foreach als Pendant zu CMD: for %i in klappt schon,

 

Muss ich für jede Datei eine eigene Schleife über die Textdatei machen (= zwei Schleifen, verschachtelt) oder gehts mit einer Schleife (wenn -exclude auch mit ner Textdatei kann)?

Link zu diesem Kommentar

Du musst für jeden Root Ordner eine Schleife über die Txt Datei machen.

 

Gibt es auch Ausnahmen, die tiefer gehen als 3 Ordner?

 

foreach($ebene1 in (Get-ChildItem D:\ | ? { $_.PsIsContainer })){
  foreach($ebene2 in (Get-ChildItem $ebene1 | ? { $_.PsIsContainer })){
     $ebene2.FullName
     #Hier der Vergleich mit der Txtdatei
  }
}

#Hier nochmals eine Schleife für alle gefundenen Ordner mit deinem Code.

Link zu diesem Kommentar

> Gibt es auch Ausnahmen, die tiefer gehen als 3 Ordner?

 

Kann schon sein, z.B. d:\daten\AbtA\ProjektA\Software soll bleiben (Dateien und der Ordner selbst), aber d:\daten\AbtA\ProjektA\Logs soll nach 90 Tagen leer sein (der Ordner kann ruhig bleiben, muss aber nicht)

 

Am liebsten wäre mir eine Datei "mussbleiben.txt" die einfach den vollen Pfad zu vielen Dateien enthält (beliebiger Tiefe).

 

> Hier der Vergleich mit der Txtdatei

Wie mache ich den?

Link zu diesem Kommentar

Je tiefer du gehst desto mehr Schleifen brauchst du. Außer du machst das ganze mit -recurse, dann musst du aber jede Datei und jeden Ordner vergleichen (kann je nach Anzahl der Daten auch sehr lange dauern).

 

Vergleich:

foreach($check in (get-content ausnahmen.txt)){
  if(!($ebene2.FullName -match $check)){
     #Datei ist NICHT in den Ausnahmen, muss hier gespeichert werden (z.B. in ein extra Array) um es danach im 2. Teil weiterzubearbeiten.
  }
}

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...