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 .avi
archivos de la carpeta?
powershell
powershell-5.0
usuario2676140
fuente
fuente
rm *.avi
? (Sí, esa es una sintaxis válida de PowerShell porquerm
es un alias dedel
.rm
ydel
son ambos alias delRemove-Item
cmdlet.Respuestas:
Use
del *.<extension>
o uno de sus alias (comorm
, si está más acostumbrado a golpear).Por lo tanto, sería
del *.avi
eliminar todos los archivos que terminan.avi
en 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
-Recurse
aGet-ChildItem
para afectar a todas las carpetas contenidas.Ejemplo:
fuente
El
Remove-Item
comando debería ser todo lo que necesitas. Simplemente pase la carpeta raíz donde existen los archivos avi y pase larecurse
bandera junto con un filtro:Esto debería ejecutarse más rápido que encontrar los archivos a través de
Get-ChildItem
e invocarRemove-Item
para cada uno.Agregar el
-WhatIf
conmutador 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
-WhatIf
cambio es innecesario. Envié una edición a esta respuesta. +1 ElRemove-Item
comando es todo lo que necesita y se ejecuta más rápido que la respuesta actualmente aceptada.-whatif
para 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 *.txt
funciona como se espera perodir -include *.txt
no 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