
37955
27.06.2008, aktualisiert um 14:37:47 Uhr
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
4 Kommentare
Neuester Kommentar
DOS resp. Windows ist leider nicht mein Spezialgebiet, ich wüsste auch keinen Filterbefehl. Daher würde ich den Ansatz folgendermassen machen:
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
vg Bytecounter
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
vg Bytecounter
Hallo lorenzo!
Sollte so gehen:
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
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 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