@echo off setlocal enabledelayedexpansion :: ------------------------------------------------------------------- :: Konfiguration :: ------------------------------------------------------------------- set "CACHE=C:\Windows\sccmcache" :: Basisordner, in dem aufgeräumt werden soll set "KEEPFILE=SETUP123.cmd" :: Datei, deren Ordner nicht gelöscht werden darf :: ------------------------------------------------------------------- :: Schritt 1: Pfad zu dem Ordner ermitteln, in dem die KEEPFILE liegt :: ------------------------------------------------------------------- set "KEEPPATH=" for /r "%CACHE%" %%F in (%KEEPFILE%) do ( if exist "%%F" ( set "KEEPPATH=%%~dpF" :: %%~dpF = Laufwerk + Pfad ohne Dateiname ) ) :: Wenn Datei nicht gefunden wird ? Abbruch if not defined KEEPPATH ( echo Datei %KEEPFILE% wurde nicht gefunden! exit /b 1 ) echo -------------------------------------------------- echo Behalte Ordner: %KEEPPATH% echo -------------------------------------------------- echo. :: ------------------------------------------------------------------- :: Schritt 2: Alle Unterordner in sccmcache durchgehen :: ------------------------------------------------------------------- for /d %%D in ("%CACHE%\*") do ( :: Vergleich: aktueller Ordner vs. KEEPPATH if /i not "%%~fD\"=="%KEEPPATH%" ( :: wenn nicht der Behalte-Ordner ? löschen echo Loesche: %%~fD rmdir /s /q "%%~fD" ) else ( echo Behalte: %%~fD ) ) :: ------------------------------------------------------------------- :: Schritt 3: Abschlussmeldung :: ------------------------------------------------------------------- echo. echo Aufraeumen abgeschlossen. endlocal