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-Key: 99717

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: bastla
bastla Oct 20, 2008 at 12:05:03 (UTC)
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
Mitglied: 54249
54249 Oct 20, 2008 at 16:27:04 (UTC)
Goto Top
Hallo Bastla,

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

Gruß René
Member: Aisenbuegel
Aisenbuegel Apr 06, 2009 at 08:22:52 (UTC)
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!
Member: bastla
bastla Apr 06, 2009 at 08:57:48 (UTC)
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 ...
Member: Aisenbuegel
Aisenbuegel Apr 06, 2009 at 09:04:02 (UTC)
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!