Powershell para eliminar todos los archivos con una determinada extensión de archivo

Powershell para eliminar todos los archivos con una determinada extensión de archivo

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 .aviarchivos 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 *.avieliminar todos los archivos que terminan .avien 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 -Recursea Get-ChildItempara 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 -Recursepará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-ChildIteme invocarlos Remove-Itempara cada uno.

  • Agregar el -WhatIfmodificador enumerará los elementos que se eliminarían, pero la eliminación real no se realiza.
  • Agregar el -Confirminterruptor 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.

información relacionada