2009-09-23 8 views
2

Je me demandais si quelqu'un savait comment supprimer un répertoire s'il contenait un fichier spécifié? Par exemple, si avoir ce répertoire:Supprimer DIR récursivement si le fichier correspond? (Powershell)

PS C:\Users\mike> dir 


Directory: C:\Users\mike 


Mode    LastWriteTime  Length Name 
----    -------------  ------ ---- 
-a---   9/17/2009 6:26 PM  6615 pic001.jpg 
-a---   9/19/2009 9:58 AM  7527 notes.txt 
-a---   8/31/2009 5:03 PM  10506 Project.xlsx 

Je voudrais supprimer \ mike si elle a un fichier jpg dans, et tout autre répertoire qui contient des fichiers .jpg.. Si un répertoire n'a pas le fichier spécifié, il ne doit pas être supprimé.

Jusqu'à présent, ce que j'ai est ceci:

get-childitem "C:\Users\mike" -include *.jpg -recurse | Where-Object { $_.mode -like 'd*' } | remove-item 

Répondre

4

Lorsque vous utilisez Get-ChildItem avec * .jpg vous n'allez obtenir des fichiers - bien, sauf si vous avez un répertoire nommé {} quelque chose .jpg. BTW j'utiliserais -filter et rester loin du paramètre -include. Soit des dragons - voir les docs sur ce paramètre.

Cela devrait faire l'affaire pour vous:

Get-ChildItem 'C:\Users\Mike' *.jpg -r | Foreach {$_.Directory} | 
    Remove-Item -Recurse -Verbose -WhatIf 

Si tapant raccourcissent que l'utilisation des alias pour:

gci 'C:\Users\Mike' *.jpg -r | %{$_.Directory} | ri -r -v -wh 

Lorsque vous êtes satisfait des résultats, retirez le -WhatIf avoir vraiment supprime les dirs.

+0

Merci, c'est exactement ce dont j'avais besoin. Merci pour les conseils aussi. –

+0

+1 pour "There be dragons" :-) – Joey

+0

Je vois que vous êtes complètement accro à la fissure de stackoverflow Keith! – x0n

Questions connexes