Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 16.11.2011, 17:04   #1
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 5
Bat file in Windows XP - ordner überwachen und löschen

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.
    Mit Zitat antworten
Alt 16.11.2011, 17:07   #2
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
Ich würde Powershell dazu nutzen.
    Mit Zitat antworten
Alt 16.11.2011, 17:23   #3
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 5
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

Geändert von morami (16.11.2011 um 17:26 Uhr). Grund: falscher text
    Mit Zitat antworten
Alt 16.11.2011, 17:49   #4
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
Hallo,

Zitat von morami Beitrag anzeigen
In Java hätte ich das ganze mit nem array gelöst, und nem counter aber das geht hier glaub ich nicht.
Warum baust du dir dann keine exe in Java und rufst die über den Scheduler auf? Damit kannst du doch alles erledigen.

blub

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 16.11.2011, 19:26   #5
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
... weil das Powershell ganz einfach kann und noch viel mehr

Aber wenn du das in Java erledigen kannst dann mach das doch damit.
    Mit Zitat antworten
Alt 17.11.2011, 09:19   #6
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 5
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
    Mit Zitat antworten
Alt 19.11.2011, 00:05   #7
Member
 
Offline
Registriert seit: 01-2009
Ort: Bensheim
Beiträge: 225
Wenn's was neues sein muss: Autoit Script
    Mit Zitat antworten
Alt 22.11.2011, 10:41   #8
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 5
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 ?
    Mit Zitat antworten
Alt 24.11.2011, 15:53   #9
Newbie
 
Offline
Registriert seit: 11-2011
Beiträge: 5
Hinweis Lösung

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
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Windows 2003 Server - kann Ordner nicht löschen S@int Windows Server Forum 5 09.03.2011 21:04
Win 7 - alte Windows Ordner löschen, aber wie? Thyral Windows 7 Forum 1 28.07.2009 18:52
File Handle während des Bootvorgangs überwachen sammy2ooo Windows Forum — Allgemein 2 09.04.2009 17:07
Nur löschen überwachen? hutz Windows Server Forum 0 16.11.2005 09:00
Löschen von Dateien überwachen ergobarbus Windows Forum — Allgemein 1 14.11.2002 12:12


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:05 Uhr. Seite generiert in 0,041 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang