Ordnerinhalt komplett löschen, bis auf einen Unterordner
Hallo,
ich habe einen Ordner, mit Unterordnern und Dateien. Ich möchte den kompletten Inhalt löschen, bis auf einen bestimmten Unterordner, der noch bestehen bleiben soll.
Das Löschen mache ich mit "rmdir /s /q c:\ordner".
Allerdings lösch ich damit ja nun alles. Ich möchte aber, dass "C:\ordner\speziellerOrdner" noch bestehen bleibt.
Gibt es dafür eine Lösung?
ich habe einen Ordner, mit Unterordnern und Dateien. Ich möchte den kompletten Inhalt löschen, bis auf einen bestimmten Unterordner, der noch bestehen bleiben soll.
Das Löschen mache ich mit "rmdir /s /q c:\ordner".
Allerdings lösch ich damit ja nun alles. Ich möchte aber, dass "C:\ordner\speziellerOrdner" noch bestehen bleibt.
Gibt es dafür eine Lösung?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 142712
Url: https://administrator.de/contentid/142712
Ausgedruckt am: 17.11.2024 um 09:11 Uhr
6 Kommentare
Neuester Kommentar
Mach den Ordner den du behalten willst, zum aktuellen Ordner, der wird nicht gelöscht.
Gruß
LotPings
Gruß
LotPings
hi,
es ist vlt nicht die sauberste Lösung aber die einfachste die mir einfällt^^
So umgehst du Quasi das Problem
Bei der geschichte würde ich aber noch Sicherheitsabfragen machen, damit der nur Löscht wenn das Backup existiert, und den TEMP löscht wenn die sachen auch wirklich wieder im Ordner sind...nicht das weil er aus irgend nem grund nen fehler hat und die daten weg sind
Grüße Pascal
EDIT: Hier mit Sicherheitsabfragen:
es ist vlt nicht die sauberste Lösung aber die einfachste die mir einfällt^^
So umgehst du Quasi das Problem
md "c:\TEMP"
move "C:\ordner\speziellerOrdner" "c:\TEMP"
rmdir /s /q c:\ordner
md "C:\ordner"
move "c:\TEMP\speziellerOrdner" "C:\ordner"
rmdir /s /q c:\TEMP
Bei der geschichte würde ich aber noch Sicherheitsabfragen machen, damit der nur Löscht wenn das Backup existiert, und den TEMP löscht wenn die sachen auch wirklich wieder im Ordner sind...nicht das weil er aus irgend nem grund nen fehler hat und die daten weg sind
Grüße Pascal
EDIT: Hier mit Sicherheitsabfragen:
echo Dummyfile > C:\ordner\speziellerOrdner\dummy.txt
md "c:\TEMP"
move "C:\ordner\speziellerOrdner" "c:\TEMP"
if not exist C:\TEMP\dummy.txt goto PAUSE
rmdir /s /q c:\ordner
md "C:\ordner"
move "c:\TEMP\speziellerOrdner" "C:\ordner"
if not exist C:\ordner\speziellerOrdner\dummy.txt goto PAUSE
rmdir /s /q c:\TEMP
del C:\ordner\speziellerOrdner\dummy.txt
exit
:PAUSE
echo.
echo Fehler beim Sichern der Daten, breche Vorgang aus Sicherheitsgründen ab!
pause
exit
Moin gurkensalat89,
ich würde für den Fall, dass es sich um einen Ordner handelt, der wie oben beschrieben direkt auf der ersten Unterebene liegt, mit einer FOR/D Anweisung arbeiten.
Wollte ich z.B. in meinem Ordner "d:\temp" alle Unterordner "backup*" löschen außer "..\Backup3" ......dann
Grüße
Biber
ich würde für den Fall, dass es sich um einen Ordner handelt, der wie oben beschrieben direkt auf der ersten Unterebene liegt, mit einer FOR/D Anweisung arbeiten.
Wollte ich z.B. in meinem Ordner "d:\temp" alle Unterordner "backup*" löschen außer "..\Backup3" ......dann
(=18:09:19 D:\temp=)
------- ohne Ausnahme ---
>for /d %i in (d:\temp\backup*) do @echo rd /s /q "%i"
rd /s /q "d:\temp\Backup1"
rd /s /q "d:\temp\backup2"
rd /s /q "d:\temp\backup3"
---- mit Ausnahme ---
(=18:09:30 D:\temp=)
>for /d %i in (d:\temp\backup*) do @if /i "%i" neq "d:\temp\backup3" @echo rd /s /q "%i"
rd /s /q "d:\temp\Backup1"
rd /s /q "d:\temp\backup2"
Grüße
Biber
Servus,
fangen wir mal leicht an:
so bekommst du (in der Dosbox) alle Unterordner serviert.
angenommen du hast in dem Ordner einen Unterordner WINDOWS
Nach Bibers berechtigtem Einwand - könnte es auch sein, dass der Ordner auch "wINdOws" heissen könnte, das federt man mit einem /i ab
Jetzt willst du aber nix angezeigt bekommen, sondern einen Befehl ausführen.
Da nehmen wir doch den alten aber guten BiberBastla Trick
Das logfile schaust du dir an, obs klappt und alle weiteren Schritte sollten klar sein.
Gruß
edit Biber du rechtsüberholer *duck*
mich würde ja echt mal interessieren, wie dein Essen schmeckt, wenn du selber schreibst, dass du besser kochen kannst
edit ² ich kaufe dem dir Befehl je noch ein /S
¶“¡¢|{}≠¡¡¿
fangen wir mal leicht an:
for /f %a in ('dir /b /S /AD') do echo %a
so bekommst du (in der Dosbox) alle Unterordner serviert.
angenommen du hast in dem Ordner einen Unterordner WINDOWS
for /f %a in ('dir /b /S /AD') do if not "%a"=="WINDOWS" echo %a
Dann siehts du fast die gleiche Liste wie oben, außer dem WINDOWS OrdnerNach Bibers berechtigtem Einwand - könnte es auch sein, dass der Ordner auch "wINdOws" heissen könnte, das federt man mit einem /i ab
for /f %a in ('dir /b /S /AD') do if /i not "%a"=="WINDOWS" echo %a
Jetzt willst du aber nix angezeigt bekommen, sondern einen Befehl ausführen.
Da nehmen wir doch den alten aber guten BiberBastla Trick
for /f %a in ('dir /b /S /AD') do if /i not "%a"=="WINDOWS" echo "rmdir %a" >>logfile.txt
Das logfile schaust du dir an, obs klappt und alle weiteren Schritte sollten klar sein.
Gruß
edit Biber du rechtsüberholer *duck*
mich würde ja echt mal interessieren, wie dein Essen schmeckt, wenn du selber schreibst, dass du besser kochen kannst
edit ² ich kaufe dem dir Befehl je noch ein /S
¶“¡¢|{}≠¡¡¿
Moin T-Mo,
Sonst wird eventuell zwar ein Unterverzeichnis namens "WINDOWS" verschont, aber nahe Verwandte wie "Windows" nicht...
Grüße
Biber
Zitat von @60730:
edit ² ich kaufe dem dir Befehl je noch ein /S
Wenn du hier ohnehin vorauseilend dein Weihnachtsgeld für Buchstabenkäufe auf den Kopp haust, dann wäg doch mal ab, ob du dir nicht noch ein "i" leisten kannst für den IF-Vergleichsoperator "i" (für "is' mir egal ob gross oder kleingeschrieben").edit ² ich kaufe dem dir Befehl je noch ein /S
Sonst wird eventuell zwar ein Unterverzeichnis namens "WINDOWS" verschont, aber nahe Verwandte wie "Windows" nicht...
Grüße
Biber
Zitat von @Biber:
Wenn du hier ohnehin vorauseilend dein Weihnachtsgeld für Buchstabenkäufe auf den Kopp haust, dann wäg doch mal ab,
ob du dir nicht noch ein "i" leisten kannst für den IF-Vergleichsoperator "i" (für "is'
mir egal ob gross oder kleingeschrieben").
Sonst wird eventuell zwar ein Unterverzeichnis namens "WINDOWS" verschont, aber nahe Verwandte wie "Windows"
nicht...
Wenn du hier ohnehin vorauseilend dein Weihnachtsgeld für Buchstabenkäufe auf den Kopp haust, dann wäg doch mal ab,
ob du dir nicht noch ein "i" leisten kannst für den IF-Vergleichsoperator "i" (für "is'
mir egal ob gross oder kleingeschrieben").
Sonst wird eventuell zwar ein Unterverzeichnis namens "WINDOWS" verschont, aber nahe Verwandte wie "Windows"
nicht...
@Biber:
Eigentlich wollte ich Sie verschonen, die nahen Verwandten wie die lieben Tanten
Denn mein Weihnachtsgeld reicht nur für Konsonanten
Für Vokale muß ich doch aus der Urlaubskasse zahle
Wo die Kohle eh wech ist was ein Mist
Tu ich dem ganzen auch noch spend´ ein weiteres Ambersand
Weil die Batch den Zeichensalat sonst nicht erkennt.
Aber das hab ich nicht verpennt, dachte das der Gurkensalat das kennt
Dafür schenk ich mir das RMdir
Und nehm das RD dafür
for /f %%a in ('dir /b /S /AD') do if /i not "%%a"=="WINDOWS" echo "rd %%a" >>logfile.txt
Grüße
Biber
retour Biber
wer ein gutes Auge hat, darf mich gerne rechts überholen