Quiero escanear un directorio (no hay subs) y eliminar cualquier archivo con una extensión. .avi
Probé esta sintaxis, pero no se generan errores ni se eliminan archivos. Este es el código que probé
get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}
¿Qué se debe modificar para eliminar todos los .avi
archivos de la carpeta?
Respuesta1
Utilice del *.<extension>
o uno de sus alias (como rm
, si está más acostumbrado a bash).
Entonces sería del *.avi
eliminar todos los archivos que terminan .avi
en el directorio de trabajo actual.
Úselo del <directory>\*.<extension>
para eliminar archivos en otros directorios.
ADVERTENCIA:Ambos del *.<extension>
y del <directory>\*.<extension>
eliminarán otras extensiones que coincidan con el patrón. Estos archivos no se envían a la Papelera de reciclaje.
Ejemplo: del *.doc*
elimina *.doc, *.docmy *.docx. El del <directory>\*.<extension>
funciona de manera similar.
Respuesta2
Suponiendo el método preferido para abrir una instancia de Powershell en el directorio, una versión genérica sería la siguiente:
Get-ChildItem *.avi | foreach { Remove-Item -Path $_.FullName }
Para una versión específica del directorio:
Get-ChildItem -Path 'C:\Users\ramrod\Desktop\Firefly\' *.avi | foreach { Remove-Item -Path $_.FullName }
Agregue -Recurse
a Get-ChildItem
para afectar todas las carpetas contenidas.
Ejemplo:
Get-ChildItem *.avi -Recurse | foreach { Remove-Item -Path $_.FullName }
Respuesta3
ElRemover el artículoEl cmdlet debería ser todo lo que necesita. Simplemente pase la carpeta raíz donde existen los archivos avi y pase el -Recurse
parámetro junto con un filtro:
Remove-Item 'C:\Users\ramrod\Desktop\Firefly\*' -Recurse -Include *.avi
Esto debería ejecutarse más rápido que buscar los archivos Get-ChildItem
e invocarlos Remove-Item
para cada uno.
- Agregar el
-WhatIf
modificador enumerará los elementos que se eliminarían, pero la eliminación real no se realiza. - Agregar el
-Confirm
interruptor le avisará antes de eliminar cada archivo, lo cual es más seguro para las personas que no se sienten cómodas conPotencia Shell.
Respuesta4
Esto finalmente funcionó para mí: probé todo lo anterior y nada.
get-childitem "<drive>:\<folder>" -recurse -force -include *.<ext> | remove-item -force
Seguro que no se requieren dos fuerzas, pero eso es lo que funciona, así que me quedo con eso.