2010-06-21 4 views
2

Je suis totalement nouveau à Powershell et je voulais écrire un script qui supprime tous les fichiers non-mp3 dans un répertoire.Powershell - Supprimer tous les fichiers non mp3

Ma solution:

get-childitem -Recurse | 
Where-Object {!($_.PSIsContainer)} | 
Where {$_.Extension -ne ".mp3"} | 
remove-item 

Qu'est-ce qui peut être amélioré dans cette déclaration ou pourrait être écrit d'une autre manière. Y a-t-il des problèmes avec cette instruction?

Merci.

+1

Je voudrais aller avec la réponse de xcud mais gardez à l'esprit que vous pouvez combiner des tests dans une seule commande Where-Object par exemple. 'Où {! $ _. PSIsContainer -et ($ _. Extension -ne '.mp3')}' –

Répondre

5

j'utiliser une seule commande Where-Object:

Get-childitem -Recurse | 
    Where-Object {!$_.PSIsContainer -AND $_.Extension -ne '.mp3'} | 
    Remove-Item -whatIf 

Si vous êtes certain qu'aucun des répertoires ont l'extension 'mp3':

Get-childitem -Recurse | Where-Object {$_.Extension -ne '.mp3'} | 
    Remove-Item -whatIf 

Retirez -whatIf pour supprimer les fichiers.

+0

qu'est-ce que -whatIf? – kamahl

+0

Décrit ce qui se passerait si vous exécutiez la commande sans exécuter la commande. –

Questions connexes