Não conheço nenhum complemento do Explorer, mas, como a maioria das coisas no Windows, isso pode ser feito com o 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
}
Salve este script como um arquivo de texto com uma .ps1
extensão. Você pode usar o Agendador de tarefas para executá-lo em intervalos regulares.
Primeiro, porém, você precisa permitir a execução de scripts do PowerShell, porque, por padrão, você pode executar apenas comandos digitados diretamente no prompt do PowerShell. Para fazer isso, abra o PowerShell e digite o seguinte comando:
Set-ExecutionPolicy RemoteSigned
Digite "y" ou "yes" quando solicitado. Veja Get-Help Set-ExecutionPolicy
para mais informações.
Agora abra o Agendador de tarefas e crie uma nova tarefa com os seguintes parâmetros:
- Na guia "Geral", digite um nome e marque a opção "Executar com mais privilégios"
- Na guia "Triggers", adicione um novo gatilho e defina a tarefa para ser executada diariamente
- Na guia "Ações", adicione uma nova ação:
- deixe o tipo como "Iniciar um programa"
- defina o campo "Programa / script" para
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- defina o campo "Adicionar argumentos" para
-NonInteractive -File "C:\path\to\script.ps1"
- Na guia "Condições", desmarque a opção "Iniciar a tarefa apenas se o computador estiver com energia CA"
Explicação linha a linha do script:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
Isso obtém uma lista de todas as unidades no computador e as percorre uma a uma. O -PSProvider FileSystem
parâmetro é necessário para retornar apenas unidades de disco, porque o PowerShell também possui pseudodrives para várias outras coisas, como seções do Registro.
Para obter mais informações, consulte Get-Help Get-PSDrive
e este tutorial sobre processamento de loop no PowerShell .
$Path = $Drive.Name + ':\$Recycle.Bin'
Isso constrói o caminho para a pasta Lixeira na unidade atual. Observe o uso de aspas simples na segunda parte, para impedir que o PowerShell interprete $Recycle
como uma variável.
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
Isso retorna todos os arquivos e subpastas sob o caminho especificado (aquele que construímos com o comando anterior). O -Force
parâmetro é necessário para ir para as pastas ocultas e do sistema, e o -Recurse
parâmetro torna o comando recursivo, ie. percorrer todos os subdiretórios também. -ErrorAction
é um parâmetro padrão para a maioria dos comandos do PowerShell, e o valor SilentlyContinue
faz com que o comando ignore erros. O objetivo disso é evitar erros nas unidades que foram configuradas para excluir arquivos imediatamente. O |
símbolo no final envia os resultados para o próximo comando; Dividi-o em várias linhas para melhor legibilidade.
Para mais informações, consulte Get-Help Get-ChildItem
.
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Isso simplesmente filtra os resultados do comando anterior e retorna apenas aqueles com mais de 30 dias. $_
refere-se ao objeto que está sendo processado no momento e, LastWriteTime
nesse caso , a propriedade refere-se à data e hora em que o arquivo foi excluído. Get-Date
retorna a data atual.
Para mais informações, consulte Get-Help Where-Object
e Get-Help Get-Date
.
Remove-Item -Recurse
Isso simplesmente exclui os itens passados a ele pelo comando anterior. O -Recurse
parâmetro exclui automaticamente o conteúdo de subpastas não vazias; sem ele, você será solicitado a fornecer essas pastas.
Para mais informações, consulte Get-Help Remove-Item
.