morami 10 Geschrieben 16. November 2011 Melden Teilen Geschrieben 16. November 2011 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: Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 16. November 2011 Melden Teilen Geschrieben 16. November 2011 Ich würde Powershell dazu nutzen. Zitieren Link zu diesem Kommentar
morami 10 Geschrieben 16. November 2011 Autor Melden Teilen Geschrieben 16. November 2011 (bearbeitet) 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 16. November 2011 von morami falscher text Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 16. November 2011 Melden Teilen Geschrieben 16. November 2011 Hallo, In Java hätte ich das ganze mit nem array gelöst, und nem counter aber das geht hier glaub ich nicht. :confused: Warum baust du dir dann keine exe in Java und rufst die über den Scheduler auf? Damit kannst du doch alles erledigen. blub Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 16. November 2011 Melden Teilen Geschrieben 16. November 2011 ... weil das Powershell ganz einfach kann und noch viel mehr ;) Aber wenn du das in Java erledigen kannst dann mach das doch damit. Zitieren Link zu diesem Kommentar
morami 10 Geschrieben 17. November 2011 Autor Melden Teilen Geschrieben 17. November 2011 Ich wollte die gelegenheit eigentlich nutzen um mal andere Wege zu gehen -->, aber ich seh schon das dass nix wird. Vielen dank für die schnelle Antworten und das mit dem Powershell werde ich mir auf jedenfall mal anschauen. Vielleicht würde sich das ja doch lohnen, wenn ich es noch anderweitig gebrauchen kann. dankescön ;) Zitieren Link zu diesem Kommentar
jaksa 10 Geschrieben 18. November 2011 Melden Teilen Geschrieben 18. November 2011 Wenn's was neues sein muss: Autoit Script Zitieren Link zu diesem Kommentar
morami 10 Geschrieben 22. November 2011 Autor Melden Teilen Geschrieben 22. November 2011 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 ? Zitieren Link zu diesem Kommentar
morami 10 Geschrieben 24. November 2011 Autor Melden Teilen Geschrieben 24. November 2011 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 :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.