No conozco ningún complemento de Explorer, pero como la mayoría de las cosas en Windows, esto se puede hacer con PowerShell:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
$Path = $Drive.Name + ':\$Recycle.Bin'
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -Recurse
}
Guarde este script como un archivo de texto con una .ps1
extensión. Luego puede usar el Programador de tareas para ejecutar esto a intervalos regulares.
Sin embargo, primero debe permitir la ejecución de los scripts de PowerShell, porque de manera predeterminada solo puede ejecutar comandos escritos directamente en el indicador de PowerShell. Para hacer esto, abra PowerShell y escriba el siguiente comando:
Set-ExecutionPolicy RemoteSigned
Escriba "y" o "sí" cuando se le solicite. Ver Get-Help Set-ExecutionPolicy
para más información.
Ahora abra el Programador de tareas y cree una nueva tarea con los siguientes parámetros:
- En la pestaña "General", ingrese un nombre y marque la opción "Ejecutar con los privilegios más altos"
- En la pestaña "Activadores", agregue un nuevo activador y configure la tarea para que se ejecute diariamente
- En la pestaña "Acciones", agregue una nueva acción:
- deje el tipo como "Iniciar un programa"
- establezca el campo "Programa / script" en
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- establezca el campo "Agregar argumentos" en
-NonInteractive -File "C:\path\to\script.ps1"
- En la pestaña "Condiciones", desmarque "Iniciar la tarea solo si la computadora está con alimentación de CA"
Explicación línea por línea del guión:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Esto obtiene una lista de todas las unidades en la computadora y las recorre una por una. El -PSProvider FileSystem
parámetro solo se requiere para devolver unidades de disco, porque PowerShell también tiene pseudounidades para varias otras cosas, como las colmenas de registro.
Para obtener más información, consulte Get-Help Get-PSDrive
y este tutorial sobre el procesamiento de bucles en PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
Esto construye la ruta a la carpeta Papelera de reciclaje en la unidad actual. Tenga en cuenta el uso de comillas simples alrededor de la segunda parte, para evitar que PowerShell interprete $Recycle
como una variable.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Esto devuelve todos los archivos y subcarpetas bajo la ruta dada (la que construimos con el comando anterior). El -Force
parámetro es necesario para ir a carpetas ocultas y del sistema, y -Recurse
hace que el comando sea recursivo, es decir. recorrer todos los subdirectorios también. -ErrorAction
es un parámetro estándar para la mayoría de los comandos de PowerShell, y el valor SilentlyContinue
hace que el comando ignore los errores. El propósito de esto es evitar errores en las unidades que se han configurado para eliminar archivos de inmediato. El |
símbolo al final canaliza los resultados al siguiente comando; Lo dividí en varias líneas para una mejor legibilidad.
Para más información, ver Get-Help Get-ChildItem
.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Esto simplemente filtra los resultados del comando anterior y devuelve solo los que tienen más de 30 días. $_
se refiere al objeto que se está procesando actualmente, y la LastWriteTime
propiedad en este caso se refiere a la fecha y hora en que se eliminó el archivo. Get-Date
Devuelve la fecha actual.
Para más información, vea Get-Help Where-Object
y Get-Help Get-Date
.
Remove-Item -Recurse
Esto simplemente elimina los elementos que le pasó el comando anterior. El -Recurse
parámetro elimina automáticamente el contenido de las subcarpetas no vacías; sin él, se le solicitarán esas carpetas.
Para más información, ver Get-Help Remove-Item
.