Je veux scanner un répertoire (il n'y a pas de sous-marins) et supprimer tout fichier avec une extension de .avi
J'ai essayé cette syntaxe, mais aucune erreur n'est levée et aucun fichier n'est supprimé. C'est le code que j'ai essayé
get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}
Que faut-il modifier pour supprimer tous les .avi
fichiers du dossier?
powershell
powershell-5.0
user2676140
la source
la source
rm *.avi
? (Oui, c'est une syntaxe PowerShell valide carrm
c'est un alias dedel
.rm
etdel
sont tous deux des alias de l'Remove-Item
applet de commande.Réponses:
Utilisez
del *.<extension>
ou l'un de ses alias (commerm
si vous êtes plus habitué à bash).Il s'agirait donc
del *.avi
de supprimer tous les fichiers se terminant.avi
dans le répertoire de travail courant.Permet
del <directory>\*.<extension>
de supprimer des fichiers dans d'autres répertoires.la source
ls *.avi -Recurse | foreach {rm $_}
En supposant la méthode préférée d'ouverture d'une instance Powershell dans le répertoire, une version générique serait la suivante:
Pour une version spécifique au répertoire:
Ajoutez
-Recurse
àGet-ChildItem
pour affecter tous les dossiers contenus.Exemple:
la source
Le
Remove-Item
commandlet devrait être tout ce dont vous avez besoin. Passez simplement le dossier racine où les fichiers avi existent et passez lerecurse
drapeau avec un filtre:Cela devrait s'exécuter plus rapidement que de rechercher les fichiers via
Get-ChildItem
et d'appelerRemove-Item
pour chacun d'eux.L'ajout du
-WhatIf
commutateur vous invitera avant de supprimer chaque fichier, ce qui est plus sûr pour les personnes moins à l'aise avec PowerShell.la source
-WhatIf
commutateur est inutile. J'ai soumis une modification à cette réponse. +1 LeRemove-Item
commandlet est tout ce dont vous avez besoin et s'exécute plus rapidement que la réponse actuellement acceptée.-whatif
pour vérifier que vous ne supprimerez que les fichiers que vous souhaitez supprimer. Et surtout lorsque vous offrez une commande de suppression à ceux dont l'expertise technique est inconnue. Mieux vaut garder les roues d'entraînement.Supposons qu'il y ait plusieurs fichiers texte dans le répertoire courant.
dir * -include *.txt
&dir *.txt
travailler comme prévu maisdir -include *.txt
ne donne rien. La raison est bien expliquée sur Stack Overflow .Commande corrigée:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}
la source
Cela l'a finalement fait pour moi - essayé tout au-dessus et nada.
bien sûr, deux forces ne sont pas nécessaires, mais c'est ce qui fonctionne, c'est donc ce avec quoi je m'en tiens.
la source
essaye ça
la source