37955
Goto Top

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?

Content-Key: 90769

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

Printed on: April 25, 2024 at 04:04 o'clock

Member: bytecounter
bytecounter Jun 27, 2008 at 08:16:33 (UTC)
Goto Top
Hallo,

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

vg
bytecounter
Mitglied: 37955
37955 Jun 27, 2008 at 08:18:43 (UTC)
Goto Top
Sorry, hab ich ganz vergessen! face-smile

MS Windows 2000 - 2008
Member: bytecounter
bytecounter Jun 27, 2008 at 11:47:12 (UTC)
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
Member: bastla
bastla Jun 27, 2008 at 12:37:41 (UTC)
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