Quiero escanear un directorio (no hay subs) y eliminar cualquier archivo con una extensión de .avi  Probé esta sintaxis, pero no se arrojan errores y no 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?
                    
                        powershell
                                powershell-5.0
                                
                    
                    
                        usuario2676140
fuente
                
                fuente

rm *.avi? (Sí, esa es una sintaxis válida de PowerShell porquermes un alias dedel.rmydelson ambos alias delRemove-Itemcmdlet.Respuestas:
Use
del *.<extension>o uno de sus alias (comorm, si está más acostumbrado a golpear).Por lo tanto, sería
del *.avieliminar todos los archivos que terminan.avien el directorio de trabajo actual.Se usa
del <directory>\*.<extension>para eliminar archivos en otros directorios.fuente
ls *.avi -Recurse | foreach {rm $_}Suponiendo el método preferido para abrir una instancia de Powershell en el directorio, una versión genérica sería la siguiente:
Para una versión específica de directorio:
Agregue
-RecurseaGet-ChildItempara afectar a todas las carpetas contenidas.Ejemplo:
fuente
El
Remove-Itemcomando debería ser todo lo que necesitas. Simplemente pase la carpeta raíz donde existen los archivos avi y pase larecursebandera junto con un filtro:Esto debería ejecutarse más rápido que encontrar los archivos a través de
Get-ChildIteme invocarRemove-Itempara cada uno.Agregar el
-WhatIfconmutador le indicará antes de eliminar cada archivo, lo que es más seguro para las personas que se sienten menos cómodas con PowerShell.fuente
-WhatIfcambio es innecesario. Envié una edición a esta respuesta. +1 ElRemove-Itemcomando es todo lo que necesita y se ejecuta más rápido que la respuesta actualmente aceptada.-whatifpara verificar que eliminará solo los archivos que desea eliminar. Y especialmente al ofrecer un comando de eliminación a aquellos con experiencia técnica desconocida. Lo mejor es mantener las ruedas de entrenamiento.Supongamos que hay varios archivos de texto en el directorio actual.
dir * -include *.txt&dir *.txtfunciona como se espera perodir -include *.txtno da nada. La razón está bien explicada en Stack Overflow .Comando corregido:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}fuente
Esto finalmente lo hizo por mí: probé todo lo anterior y nada.
seguro que no se requieren dos fuerzas, pero eso es lo que funciona, así que eso es con lo que me estoy quedando.
fuente
prueba esto
fuente