Batch löschen mit ausnahme
Hallo,
bin gerade am verzweifeln.
Ich versuche gerade in ein Ordner alle Dateien zu löschen, die nicht *mix* enthalten.
Die Unterordner sollten auch durchgearbeitet werden.
Sprich, alle *mix* Dateien sollen erhalten bleiben.
MFg
bin gerade am verzweifeln.
Ich versuche gerade in ein Ordner alle Dateien zu löschen, die nicht *mix* enthalten.
Die Unterordner sollten auch durchgearbeitet werden.
Sprich, alle *mix* Dateien sollen erhalten bleiben.
MFg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1097815959
Url: https://administrator.de/contentid/1097815959
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Dann zeig mal, was du schon hast. Dann könnte man auch sagen, wo es klemmt.
Gruß
C.C.
Dann zeig mal, was du schon hast. Dann könnte man auch sagen, wo es klemmt.
Gruß
C.C.
Moin,
Gruß Thomas
Get-ChildItem $Pfad -recurse -dir | Where-Object {!(Get-ChildItem $_.Fullname)} | Remove-Item
Gruß Thomas
# Quellpfad
$Pfad = "C:\Files\wav"
# Alle Dateien löschen, die nicht "mix" enthalten.
Remove-Item -Path $Pfad -Include "*.*" -Exclude "*mix*" -recurse
# Alle leeren Ordner löschen
Get-ChildItem $Pfad -recurse -dir | Where-Object {!(Get-ChildItem $_.Fullname)} | Remove-Item
Zitat von @TK1987:
Da bleiben aber dann im Fall der Fälle wieder leere Ordner übrig wenn in einem Ordner nur Unterordner drin sind die selbst leer sind und die Oberordner als erstes überprüft werden, nach den Löschen der Unterordner wird ja der Parent-Ordner nicht erneut geprüft, der ist dann aber auch leer . Deswegen der Länge nach absteigend sortieren dann passiert das nicht.- Alle leeren Ordner löschen
Get-ChildItem $Pfad -recurse -dir | sort {$_.FullName.length} -Descending | Where-Object {!(Get-ChildItem $_.Fullname)} | Remove-Item
Zitat von @MPFG:
Hallo,
ich finde zwar die Lösung mit Poweshell super, leider bin ich aber gezwungen wieder auf Batch auszuweichen.
Ich möchte alle Dateien löschen, die nicht mix enthalten.
Hier mein Ansatz:
"%%i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
MfG
Hallo,
ich finde zwar die Lösung mit Poweshell super, leider bin ich aber gezwungen wieder auf Batch auszuweichen.
Ich möchte alle Dateien löschen, die nicht mix enthalten.
Hier mein Ansatz:
for /f "delims=" %%i in ('dir /b /a-d "Pfad"^|findstr /v /i "*mix*.*"') do del "Pfad%%i"
"%%i" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
MfG
Bei Verwendung von doppelten Prozentzeichen muss das ganze in einer Batchdatei stehen, wenn man das ganze auf einer Konsole direkt testen will dürfen es nur einfach Prozentzeichen sein.
Konsole
for /f "delims=" %i in ('dir /b /a-d "d:\ordner" ^|findstr /vic:"mix"') do del "d:\ordner\%~i"
for /f "delims=" %%i in ('dir /b /a-d "d:\ordner" ^|findstr /vic:"mix"') do del "d:\ordner\%%~i"