La eliminación de una serie de nombres de archivo es simple:
Remove-Item foo.txt,c:\temp\bar.txt,baz\baz.txt
O a través de una variable:
$files = 'foo.txt','c:\temp\bar.txt','baz\baz.txt'
Remove-Item $files
Y a continuación, sobre la base de todos los archivos en carpetas diferentes:
$folders = 'C:\temp','C:\users\joe\foo'
Get-ChildItem $folders -r | Where {!$_.PSIsContainer} | Remove-Item -WhatIf
quitar el -WhatIf
para hacer la eliminación real.
Si desea eliminar un archivo con un nombre específico, puede usar el parámetro -Filter
en Get-ChildItem
. Este sería el enfoque de mejor rendimiento:
$folders = 'C:\temp','C:\users\joe\foo'
Get-ChildItem $folders -r -filter foo.bak | Remove-Item -WhatIf
Si el nombre requiere coincidencia más sofisticado, puede utilizar una expresión regular en un caso ScriptBlock por ejemplo:
$folders = 'C:\temp','C:\users\joe\foo'
Get-ChildItem $folders -r | Where {$_.Name -match 'f\d+.bak$'} |
Remove-Item -WhatIf
¿qué es PSIsContainer? – Agzam
¿Puede decirme cómo eliminar archivos con el nombre de archivo dado en todas las carpetas definidas en una variable? – Agzam
$ PSIsContainer es una propiedad añadida por PowerShell que indica si el "elemento hijo" es un contenedor (directorio) o no (archivo). Tenga en cuenta que este concepto es independiente del proveedor real (sistema de archivos, certificado, wsman, etc.). –