Jump to content

Bat file in Windows XP - ordner überwachen und löschen


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

Empfohlene Beiträge

Hallo alle miteinander,

 

Ich habe ein kleines problem beim erstellen einer bat datei --> OS: Windows XP

und zwar sollte diese folgendes ausführen:

 

--> checken ob sich Ordner im pfad (C:\pfad\pfad2\pfad3) befinden die älter als 30 Tage sind. Wenn ja dann löschen. Allerdings müssen die letzten 3 Ordner erhalten bleiben.

 

Bedingung:

 

1. Es müssen immer die letzten 3 Ordner erhalten bleiben

2. Der Ordner muss älter als 30 Tage sein

 

Die Namensgebung der zu löschenden Ordner sieht z.b wie folgt aus:

 

1. 20111024155156 also das Jahr, Monat, Tag, Std , min, sek. sind im Name bereits enthalten.

 

Ich möchte dies Aktionen als Batch Datei ausführen lassen und sie über den scheduler täglich zu einer bestimmten Uhrzeit laufen lassen. Am besten im Hintergrund. Es sollte aber eine FM kommen sobald es zu problemen kommt.

 

Ich habe mir folgendes ausgedacht:

über forfiles

 

forfiles /p "c:\pfad\pfad2\pfad3" /c "cmd /c if @isdir==TRUE RMDIR /S /Q @path" /d -30

 

lösch ich die ordner die älter sind als 30 Tage.

Mich stellt sich die Frage wie ich es schaff das er die letzten 3 stehen lässt??

 

Sorry aber ich bin grad am lernen mit bat. files und CMD umzugehen.

In Java hätte ich das ganze mit nem array gelöst, und nem counter aber das geht hier glaub ich nicht. :confused:

Link zu diesem Kommentar

danke Dukel für die schnelle Antwort.

 

Du würdest Powershell nutzen weil ... ? ;-)

 

nicht bösse gemeint aber Ich müsste dazu Powershell installieren... und das auf 36 Rechnern.

Ne andere möglichkeit wär noch über Cygwin, das bereits installiert und genutzt wird, aber DA bin ich glaub ich im falschen forum

bearbeitet von morami
falscher text
Link zu diesem Kommentar

Also ich habs mal mit forfiles versucht, aber irgendwie klappt das ganze nicht.

 

 

for /f "skip=3 delims=" %%i in ('dir /s /b /o-d /ad "C:\proj\Cc\artifacts\ApplTemplates\??????????????"') do FORFILES -p"%%i" -d-10 -c"cmd /c IF @ISDIR==TRUE rd @path"

 

 

Ich denke mal die syntax ist soweit i.o. und er gibt auch die richtigen Ordner an Forfiles weiter, allerdings passiert nix (heist es werden keine Ordner gelöscht) hatt jemand von euch vielleicht eine Idee woran das liegen könnte ?

Link zu diesem Kommentar

Für diejenigen die sich für die Lösung MEINES problems interessieren:

 

for /d %%a in (%CcRootDirart%\*) do (

for /f "skip=3 delims=" %%i in ('dir /ad /o-d /b %%a') do FORFILES -p%%a -c"cmd /c rd /s /q %%i" -d-10

)

 

:) Die erste for schleife geht durch die vorhandene Ordnerstruktur und übergibt der 2 for schleife den kompletten pfad jedes einzelnen Ordner.

 

Die zweite for schleife übergibt dann alle (bis auf 3) Unterordner an forfiles.

Forfiles überprüft ob diese älter sind als 10 Tage, wenn Ja dann werden diese gelöscht. Fertig :)

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