37955

Verzeichnisse und Inhalte mit Ausnahmen löschen

Hallo Leute,

ich benötige dringend ein Skript, welches mit Dateien und Unterverzeichnisse aus einem bestimmten Verzeichnis entfernt, aber ein Unterverzeichnis bestehen bleibt. Das normale Löschen von Dateien und Verzeichnissen ist ja kein Problem, aber ich habe mit der Ausnahme meine Probleme.

Beispiel:
Alle Dateien und Unterverzeichnisse mit Ausnahme des Unterverzeichnis "TEST2" sollen aus c:\TEST1\ entfernt werden. Der Name der restlichen Dateien und Verzeichnisse und ist jedoch flexibel und kann sich ständig ändern.

Könnt ihr mir helfen?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 90769

Url: https://administrator.de/forum/verzeichnisse-und-inhalte-mit-ausnahmen-loeschen-90769.html

Ausgedruckt am: 21.05.2025 um 08:05 Uhr

bytecounter
bytecounter 27.06.2008 um 10:16:33 Uhr
Goto Top
Hallo,

wäre hilfreich zu wissen, mit welchem System Du arbeitest.

vg
bytecounter
37955
37955 27.06.2008 um 10:18:43 Uhr
Goto Top
Sorry, hab ich ganz vergessen! face-smile

MS Windows 2000 - 2008
bytecounter
bytecounter 27.06.2008 um 13:47:12 Uhr
Goto Top
DOS resp. Windows ist leider nicht mein Spezialgebiet, ich wüsste auch keinen Filterbefehl. Daher würde ich den Ansatz folgendermassen machen:

rem erstmal alle Dateien entfernen
echo J | del *.*
rem Schleife: Liest den Rest (die bestehenden Verzeichnisse) einzeln ein
for /R "c:\mein Verzeichnis" %%f in (*.*) do (  
   rem Handelt es sich um das weiter benötigte Verzeichnis?
   if not %%f == "TEST2" (  
       rem nein -> Verzeichnisbaum löschen
       rm /q %%f
   )
)

Der Code ist ungeprüft und soll Dir nur einen Ansatz geben! Sicher gibt es eine bessere Lösung, aber wie gesagt, DOS ist nicht mein Spezialgebiet face-wink

vg Bytecounter
bastla
bastla 27.06.2008 um 14:37:41 Uhr
Goto Top
Hallo lorenzo!

Sollte so gehen:
@echo off & setlocal
set "Verz=C:\Test1"  
set "Behalten=Test2"  
for /f "delims=" %%i in ('dir /b /ad "%Verz%"^|findstr /v /x /c:"%Behalten%"') do echo rd /s /q "%Verz%\%%i"  
echo del /q "%Verz%"  
Das "echo" in den letzten beiden Zeilen ist für einen ersten Test gedacht - dadurch wird der jeweilige Löschbefehl nur angezeigt, aber noch nicht ausgeführt; wenn Du es entfernst, wird ohne Rückfrage gelöscht.

Das nicht zu löschende Verzeichnis ist bei der Zuweisung an die Variable %Behalten% exakt (mit vollständigem Namen, der Pfad ist ja bereits in %Verz% festgelegt) anzugeben. Falls Groß-/Kleinschreibung nicht unterschieden werden sollen, noch den Schalter "/i" zum "findstr" hinzufügen.

Grüße
bastla