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!
Please also mark the comments that contributed to the solution of the article
Content-Key: 621173
Url: https://administrator.de/contentid/621173
Printed on: April 24, 2024 at 22:04 o'clock
4 Comments
Latest comment
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