Habe ich eine Liste der Dateinamen in eine text-Datei wie folgt:
f1.txt
f2
f3.jpg
Wie lösche ich alles aus einem Ordner außer diesen Dateien in der Powershell?
Pseudo-code:
- Lesen Sie die text-Datei line-by-line
- Erstellen einer Liste von Dateinamen
- Recurse-Ordner und seine Unterordner
- Wenn Dateiname nicht in der Liste, löschen.
Daten:
Code:
Entfernen Sie die
-WhatIf
wechseln, wenn Sie zufrieden mit Ihren Ergebnissen.-WhatIf
zeigt Ihnen, was es würde tun (d.h. es wird nicht gelöscht)-Oisin
dir -rec *.*
sindFileInfo
Instanzen, können Sie einfach$_.Name
um den Namen der Datei. PowerShell konvertiert die Datei in einen string um[io.path]::GetFileName($_)
.Wenn sich die Dateien im aktuellen Ordner, können Sie dies tun:
Dieser Ansatz setzt Voraus jede Datei wird in einer separaten Zeile. Wenn die Dateien in Unterordnern, dann würde ich mit Oisin ' s Ansatz.
eigentlich nur scheint zu funktionieren für die ersten Verzeichnis anstatt recursing - meine geänderte Skript bezieht, richtig.