Script Powershell pour supprimer les fichiers qui ne sont pas spécifiés dans une liste
J'ai une liste de noms de fichiers dans un fichier texte comme ceci:
f1.txt
f2
f3.jpg
Comment puis-je supprimer tout le reste à partir d'un dossier à l'exception de ces fichiers dans Powershell?
Pseudo-code:
- Lire le fichier texte ligne par ligne
- Créer une liste de noms de fichiers
- Recurse dossier et de ses sous-dossiers
- Si le nom de fichier n'est pas dans la liste, supprimez-le.
OriginalL'auteur Mrchief | 2010-01-05
Vous devez vous connecter pour publier un commentaire.
De données:
Code:
Supprimer la
-WhatIf
commutateur si vous êtes satisfait de vos résultats.-WhatIf
vous montre ce qu'il serait faire (c'est à dire qu'il ne sera pas supprimer)-Oisin
Merci. Cela fonctionne parfaitement pour moi. J'ai essayé avec -notcontains que Mike a suggéré, et les résultats sont les mêmes.
je déteste -notcontains. nan, juste une plaisanterie. ouais, c'est jamais terser.
Depuis les résultats retournés par
dir -rec *.*
sontFileInfo
cas, vous pouvez simplement utiliser$_.Name
pour obtenir le nom de fichier. PowerShell convertit le fichier en une chaîne pour faire un appel à[io.path]::GetFileName($_)
.Vrai, que.
OriginalL'auteur x0n
Si les fichiers existent dans le dossier actuel, vous pouvez le faire:
Cette approche suppose que chaque fichier est sur une ligne distincte. Si les fichiers existent dans les sous-dossiers, puis je voudrais aller avec Oisin.
Si les sous-dossiers sont concernés, alors vous ne pas veux utiliser mon approche et vous ne voulez pas utiliser -r sinon il va supprimer tous les dossiers.
OriginalL'auteur Keith Hill
effectivement cela ne semble fonctionner pour la première répertoire plutôt que de recursing - modifié mon script parcourt correctement.
OriginalL'auteur