45455
Jun 26, 2009, updated at 12:54:36 (UTC)
3640
4
0
NOT in FOR-Schleife?
Verzeichnisse, die NICHT einer Liste entsprechen, sollen gelöscht werden
Hallo an die Batch-Bastler,
nach etwas Suche hab ich kapiert, wie ich Verzeichnisse löschen kann, die vorher in einer Text-Datei gespeichert wurden:
For /f "tokens=1" %%i IN (folders.txt) DO (
rmdir %%i /DELETE
)
Jetzt hätt ichs aber gern umgekehrt, die Verzeichnisse in der Datei sollen stehen bleiben, alles andere gelöscht werden.
Aber ein NOT geht ja hier nicht. (Wär ja auch zu einfach für einen Progg-DAU wie mich)
Das ganze passiert nur in einem Verzeichnis mit mehreren Unterverzeichnis, von denen halt die vorgegebenen stehen bleiben sollen.
Ich hab mich auch schon an FOR /R probiert, da man da ja den Pfad angeben kann, innerhalb dessen abgearbeitet wird, komme da aber auch nicht recht weiter.
Könnte da jemand "Starthilfe" geben?
Gruß
kai
nach etwas Suche hab ich kapiert, wie ich Verzeichnisse löschen kann, die vorher in einer Text-Datei gespeichert wurden:
For /f "tokens=1" %%i IN (folders.txt) DO (
rmdir %%i /DELETE
)
Jetzt hätt ichs aber gern umgekehrt, die Verzeichnisse in der Datei sollen stehen bleiben, alles andere gelöscht werden.
Aber ein NOT geht ja hier nicht. (Wär ja auch zu einfach für einen Progg-DAU wie mich)
Das ganze passiert nur in einem Verzeichnis mit mehreren Unterverzeichnis, von denen halt die vorgegebenen stehen bleiben sollen.
Ich hab mich auch schon an FOR /R probiert, da man da ja den Pfad angeben kann, innerhalb dessen abgearbeitet wird, komme da aber auch nicht recht weiter.
Könnte da jemand "Starthilfe" geben?
Gruß
kai
Please also mark the comments that contributed to the solution of the article
Content-Key: 119159
Url: https://administrator.de/contentid/119159
Printed on: April 26, 2024 at 03:04 o'clock
4 Comments
Latest comment
Hallo blue0711!
Wenn in der Datei "D:\DieNicht.txt" die vollständigen Pfade der nicht zu löschenden Ordner des Ausgangsordners "D:\Der Ordner" stehen, dann etwa so:
Wegen des "echo" vor dem "rd" werden die Löschbefehle (zum Testen) nur angezeigt, aber noch nicht ausgeführt.
Grüße
bastla
[Edit] @77559: Wusste ich doch, dass ich "findstr /G" Dir überlassen sollte ... [/Edit]
Wenn in der Datei "D:\DieNicht.txt" die vollständigen Pfade der nicht zu löschenden Ordner des Ausgangsordners "D:\Der Ordner" stehen, dann etwa so:
for /d %%i in ("D:\Der Ordner\*.*") do findstr /i "%%~fi" "D:\DieNicht.txt">nul || echo rd /s /q "%%i"
Grüße
bastla
[Edit] @77559: Wusste ich doch, dass ich "findstr /G" Dir überlassen sollte ... [/Edit]
Zitat von @45455:
Jetzt hätt ichs aber gern umgekehrt, die Verzeichnisse in der Datei sollen stehen bleiben, alles andere gelöscht werden. Aber ein NOT geht ja hier nicht. (Wär ja auch zu einfach für einen Progg-DAU wie mich)
Das ganze passiert nur in einem Verzeichnis mit mehreren Unterverzeichnis, von denen halt die vorgegebenen stehen bleiben sollen.
Hallo Kai,Jetzt hätt ichs aber gern umgekehrt, die Verzeichnisse in der Datei sollen stehen bleiben, alles andere gelöscht werden. Aber ein NOT geht ja hier nicht. (Wär ja auch zu einfach für einen Progg-DAU wie mich)
Das ganze passiert nur in einem Verzeichnis mit mehreren Unterverzeichnis, von denen halt die vorgegebenen stehen bleiben sollen.
versuch mal dies (ungetestet):
Pushd C:\Anfangsverzeichnis
For /f "delims=" %%i IN (' Dir /B /S /AD ^| findstr /i /V /G:folders.txt ') DO (
Echo rmdir "%%i" 2>NUL
)
Popd
Wenn die Ausgabe korrekt erscheint das Echo vor rmdir entfernen.
Der Befehl rmdir oder kürze rm hat nur die Optionen /S /Q, da gibts es kein /Delete.
Gruß
LotPings
Edit Option /i im findstr zugefügt, Fehler entsorgt, bastlas Anregung eingebaut.t