Búsqueda de sitios web

¿Cómo eliminar archivos de más de X días en PowerShell?


Si desea mantener y organizar archivos, es bueno eliminar periódicamente los archivos que ya no son necesarios, específicamente los archivos que tienen más de una determinada cantidad de días. En este tutorial, le mostraré cómo eliminar archivos con más de X días en PowerShell.

Para eliminar archivos con una antigüedad superior a un número de días específico en PowerShell, use el cmdlet Get-ChildItem para recuperar los archivos de un directorio, filtrelos por hora de última escritura con el cmdlet Where-Object y luego elimínelos con Remove- Artículo. Por ejemplo, para eliminar archivos con más de 30 días, puede usar este comando: Get-ChildItem -Path “C:\MyFolder” | Donde-Objeto {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Quitar elemento.

Eliminar archivos de más de X días en PowerShell

PowerShell proporciona el cmdlet Get-ChildItem para eliminar archivos con una antigüedad superior a una determinada cantidad de días.

Cuando se utiliza este comando, primero recupera los archivos de un directorio específico y luego canaliza la salida al cmdlet Where-Object para filtrar los archivos según su antigüedad. Finalmente, el cmdlet Remove-Item se utiliza para eliminar los archivos.

A continuación se muestra un ejemplo básico de una secuencia de comandos que elimina archivos de más de 30 días de una carpeta específica:

$Path = "C:\MyFolder"
$Days = 30
Get-ChildItem -Path $Path | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$Days) } | Remove-Item

En este script, $Path especifica el directorio para buscar archivos y $Days define el número de días utilizados para filtrar archivos según su última hora de escritura. Se eliminan los archivos que tengan más de 30 días a partir de la fecha actual.

En la captura de pantalla siguiente, ejecuté el script, que eliminó todos los archivos con más de 30 días del directorio.

Eliminar tipos de archivos específicos de más de 30 días en PowerShell

También puede modificar el script de PowerShell para eliminar tipos de archivos específicos o excluir ciertos directorios que tengan más de 30 días. Por ejemplo, para eliminar sólo archivos .log de más de 30 días, puede utilizar el siguiente script:

$Path = "C:\Logs"
$Days = 30
Get-ChildItem -Path $Path -Filter *.log | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$Days) } | Remove-Item

Este script de PowerShell buscará archivos .log específicamente y excluirá todos los demás tipos de archivos.

Manejo de errores y registro

Siempre es bueno controlar los errores al escribir el script de PowerShell. Puede agregar los parámetros -ErrorAction y -ErrorVariable para capturar cualquier error que ocurra. Además, puede enviar las acciones a un archivo de registro utilizando los cmdlets Out-File o Add-Content. A continuación se explica cómo puede modificar el script de PowerShell para incluir el manejo y el registro de errores:

$Path = "C:\MyFolder"
$Days = 30
$LogPath = "C:\Logs\log.txt"
$ErrorActionPreference = "Continue"

Get-ChildItem -Path $Path -Recurse | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$Days) } | ForEach-Object {
    try {
        $_ | Remove-Item -ErrorAction Stop
        "$($_.FullName) was deleted successfully" | Out-File -FilePath $LogPath -Append
    } catch {
        "An error occurred: $_" | Out-File -FilePath $LogPath -Append
    }
}

En el script de PowerShell anterior, $LogPath especifica la ruta al archivo de registro donde se registrarán las acciones. El bloque try intenta eliminar el archivo y registra el mensaje de éxito, mientras que el bloque catch captura cualquier error y lo registra.

Conclusión

Usar PowerShell para eliminar archivos que tengan más de una cantidad determinada de días es fácil y conveniente.

En este tutorial de PowerShell, he explicado cómo eliminar archivos con más de X días en PowerShell usando los cmdlets Get-ChildItem y Remove-Item.

Artículos relacionados