Powershell - Lösche Datei wenn String in Filename enthalten
Hallo zusammen,
ich stehe auf dem Schlauch. Ich will ein Skript das eine Ordnerstruktur rekursiv durchsucht und wann immer es ein String in einem Dateinamen findet, soll es die ganze Datei löschen.
Bisher mein Skript:
Frage: Es soll mehrere Strings prüfen. Das Skript durchsucht 100000 Dateien. Ich will nicht das es für jeden String einmal alles durchgeht.
Kann mir jemand helfen? Was müsste ins Skript damit er mehrere Strings prüft? Sozsuagen $string1, $string2 etc. ?
Viele Grüße!
ich stehe auf dem Schlauch. Ich will ein Skript das eine Ordnerstruktur rekursiv durchsucht und wann immer es ein String in einem Dateinamen findet, soll es die ganze Datei löschen.
Bisher mein Skript:
$Zielordner = "C:\Users\"
$string = "Copy"
get-childitem $Zielordner -Recurse | where-object {$_.Name -like "*$string*"} | foreach ($_) {remove-item $_.fullname}
Frage: Es soll mehrere Strings prüfen. Das Skript durchsucht 100000 Dateien. Ich will nicht das es für jeden String einmal alles durchgeht.
Kann mir jemand helfen? Was müsste ins Skript damit er mehrere Strings prüft? Sozsuagen $string1, $string2 etc. ?
Viele Grüße!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 621173
Url: https://administrator.de/forum/powershell-loesche-datei-wenn-string-in-filename-enthalten-621173.html
Ausgedruckt am: 22.12.2024 um 20:12 Uhr
4 Kommentare
Neuester Kommentar
Frage: Es soll mehrere Strings prüfen. Das Skript durchsucht 100000 Dateien. Ich will nicht das es für jeden String einmal alles durchgeht.
Kommt hier gefühlt 3 mal am Tag die Frage ... z.B. hier Powershell select-string -pattern$suchstrings = "Suchich1","Suchich2"
ls 'D:\IrgendeinOrdner' -File -Recurse -Force -EA 0 | ?{Select-String $_.FullName -Pattern $suchstrings -SimpleMatch -Quiet} | del -Force -Verbose
"C:\Users\"
Na dann hoff ich mal das dein Skript mit genügend Rechten ausgestattet unterwegs ist .
Uups, das mein Skript sucht nicht in den Dateinamen sondern im Inhalt der Dateien , da hatte ich wohl das kleine Detail überlesen, sorry.
Willst du nur die Dateinamen durchsuchen dann hast du mehrere Möglichkeiten, hier mal zwei mögliche
Oder auch
Willst du nur die Dateinamen durchsuchen dann hast du mehrere Möglichkeiten, hier mal zwei mögliche
$suchstrings = "Suchich1","Suchich2"
$filter = $suchstrings | %{"*$_*"}
ls 'D:\IrgendeinOrdner' -File -Filter $filter -Recurse -Force -EA 0 | del -Force -Verbose
$suchstrings = "Suchich1","Suchich2"
$pattern = ($suchstrings | %{[regex]::Escape($_)}) -join "|"
ls 'D:\IrgendeinOrdner' -File -Recurse -Force -EA 0 | ?{$_.Name -match $pattern} | del -Force -Verbose