54249
Goto Top

Via Batch alle Ordner und deren Inhalt löschen, mit ausnahme der 2 jüngsten Ordner.

Hallo Liebe Administrator.de-Gemeinde,

ich hoffe ihr könnt mir mit eurem wissen bei meinem Batch-Problem weiterhelfen.

In einem Ordner "Sicherung" werden automatisch Unterordner erstellt,
welche folgendes Namensformat haben: "Sicherung_JJJJ-MM-TT" also "Sicherung_2008-10-20".

Aus Speicherplatzgründen sollen lediglich die letzten 2 Ordner vorhanden bleiben.
Sozusagen sollen die 2 jüngsten Ordner vorhanden bleiben und der Rest soll gelöscht werden.

Die Methode mit Daten welche älter als 7, 14 oder 31 Tage sind -> löschen, funktioniert nicht.
Weil Betroffenen Personen nicht Regelmäßig sichern.

Ich hoffe ihr könnt mir helfen.

Content-ID: 99717

Url: https://administrator.de/contentid/99717

Ausgedruckt am: 26.11.2024 um 10:11 Uhr

bastla
bastla 20.10.2008 um 14:05:03 Uhr
Goto Top
Hallo rg-87!

Etwa so:
@echo off & setlocal
set "Basis=D:\Sicherung"  
set "Ordner=Sicherung_20??-??-??"  
set Anzahl=2

for /f "skip=%Anzahl% delims=" %%i in ('dir /b /ad /o-n "%Basis%\%Ordner%"') do echo rd /s /q "%Basis%\%%i"  
Solange das "echo" in der letzten Zeile steht, werden die Löschbefehle (zum Testen) nur angezeigt - wenn Du es entfernst, werden dann auch Ordner entfernt ...

Bitte bei Änderung des Basisordners beachten, dass am Ende kein "\" einzugeben ist (auch nicht, wenn es ein Root-Ordner wie "F:\" sein sollte - dann wäre nur "F:" zu verwenden).

Grüße
bastla
54249
54249 20.10.2008 um 18:27:04 Uhr
Goto Top
Hallo Bastla,

Vielen Dank, hat alles geklappt.
Habe es noch ein bisschen angepasst und gut war.

Gruß René
Aisenbuegel
Aisenbuegel 06.04.2009 um 10:22:52 Uhr
Goto Top
Hi bastla,

Vielleicht kannst Du auch mir weiterhelfen.

Ich möchte beim Start von XP alle Ordner unter C:\Dokumente Einstellungen löschen,
Außer "Default Users, All Users, Networkservice,LocalService".
Leider kann ich Dein Script nicht anwenden, da die Formatierung nicht alphabetisch ist.

Hast Du eine Idee?

Danke!
bastla
bastla 06.04.2009 um 10:57:48 Uhr
Goto Top
Hallo Aisenbuegel!

Ungetestet etwa so:
@echo off & setlocal
set "Basis=C:\Dokumente und Einstellungen"  
set "Ausnahmen=#Default Users#All Users#Networkservice#LocalService#"  

for /d %%i in ("%Basis%\*.*") do echo %Ausnahmen%|findstr /i /c:"#%%~nxi#">nul || echo rd /s /q "%%i"  
Bitte beachten, dass jeder Ordnername in den Ausnahmen durch "#" begrenzt wird.

Zur Sicherheit wird nicht nach Groß-/Kleinschreibung unterschieden (obwohl die angeführten Ausnahmen eindeutig sein sollten), sodass etwa auch "NetworkService" nicht gelöscht würde ("Default User" ohne "s" am Ende würde es allerdings erwischen face-wink).

Als weitere Sicherheitsmaßnahme (für die Testphase) ist das "echo" vor dem "rd" gedacht - dadurch werden die Löschbefehle nur angezeigt.

Grüße
bastla

P.S.: Eigentlich wäre aber ein eigener Thread angebracht gewesen ...
Aisenbuegel
Aisenbuegel 06.04.2009 um 11:04:02 Uhr
Goto Top
Hi bastla,

Vielen Dank für Deine promte Hilfe!

Gerade wollte ich entwarnung geben. da ich einen weiteren Thread von Dir gefunden habe:


@echo off & setlocal

set "Verz=C:\Dokumente und Einstellungen"

set "Behalten1=All Users"
set "Behalten2=Default User"
set "Behalten3=LocalService"
set "Behalten4=NetworkService"

for /f "delims=" %%i in ('dir /b /ad "%Verz%"^|findstr /v /x /c:"%Behalten1%" /c:"%Behalten2%" /c:"%Behalten3%" /c:"%Behalten4%"') do rd /s /q "%Verz%\%%i"

echo del /q "%Verz%"

Also nochmals vielen Dank! Ohne Deine Vorarbeit hätt ich das nie gepackt!

schönen Tag noch!