Exclusão automática de arquivos antigos da lixeira, mantendo os novos?

25

Quero um complemento do Explorer que exclua os arquivos antigos da lixeira após um período de tempo.

Por exemplo, quero definir o limite de tempo para 30 dias. Quando eu excluo um arquivo no Windows, o software mantém um registro do tempo de exclusão. Todos os dias, ele procurará por arquivos excluídos cuja idade atingiu 30 dias e será excluído, se houver algum.

Existe algum software como este?

hkBattousai
fonte
Talvez, em vez de definir um limite de tempo, a Lixeira exclua automaticamente os itens mais antigos quando um determinado limite de tamanho for atingido? Isso seria aceitável?
William Jackson
3
@WilliamJackson Isso pode ser uma solução para aqueles que têm espaço limitado no disco rígido. Mas, no meu caso, quero garantir que não me arrependo de esvaziar o arquivo de reciclagem devido à perda de um arquivo excluído recentemente. Com esse sistema, esquecerei a lixeira, ela se esvaziará automaticamente e terei tempo de sobra para recuperar um arquivo excluído, se me arrepender depois.
precisa saber é o seguinte
1
No mundo do gnu / linux, o KDE tem esse recurso, e acho ótimo para a usabilidade. Por que devo manter os arquivos da lata de lixo por mais de, digamos, 1 mês? Essa abordagem não bagunça sua lixeira com arquivos antigos que não são mais relevantes para você, por isso é muito mais fácil encontrar e recuperar um ou mais arquivos quando você precisar (realmente útil se você trabalha muito com texto) arquivos, sempre pequenos) e não desperdice espaço em disco com arquivos que não são mais úteis para você.
gerlos
Não é um explorador adicionar, e é apenas 24 horas, mas CCleaner tem esta opção i.imgur.com/JaeJhzU.png
Matthew Bloqueio

Respostas:

9

RecycleBinEx é um aplicativo simples para Windows que faz exatamente o que você pede. Consulte: http://www.fcleaner.com/recyclebinex

No Mac OSX, Hazel faz a mesma coisa (entre outras): http://www.noodlesoft.com/

O KDE Plasma envia esse recurso como padrão ; portanto, se você estiver executando o Kubuntu, Arch, Chackra Linux ou qualquer outra distro do KDE, você já possui esse recurso. Basta olhar para a janela de configuração do Dolphin.

No Ubuntu Unity, Gnome ou qualquer outro ambiente de desktop gnu / linux que forneça um recurso padrão do FreeDesktop.org Trash, você pode usar o AutoTrash para fazer isso: http://www.logfish.net/pr/autotrash/
Comportamento semelhante também pode ser realizado com o lixo-cli , que também pode ser usado para enviar arquivos para o lixo, diretamente da linha de comando. Consulte: https://github.com/andreafrancia/trash-cli

A maioria dos aplicativos de e-mail por aí também possui esse recurso para sua "lixeira".

No Android, não há "lixeira" por padrão (quando você a exclui, ela desaparece para sempre), mas você pode instalar aplicativos como o Dumpster para (de alguma forma) obter recursos semelhantes: http://www.dumpsterapp.mobi/

Como dito acima, acho que remover automaticamente arquivos antigos da lata de lixo é um ótimo recurso para torná-lo mais utilizável , uma vez que reduz a desordem (os arquivos que você lixou na lixeira há 3 meses ainda são relevantes para você? E TODAS essas revisões antigas do mesmo arquivo) e torna mais fácil encontrar o que você deseja recuperar (afinal, esse é o motivo de ter uma "lixeira" em nossos computadores), ainda sendo seguro.

É ainda mais útil se você trabalha muito com arquivos de texto (código ou prosa), que na maioria das vezes são pequenos e não precisam de muito espaço (portanto, talvez nunca cheguem à cota da lixeira). Dessa forma, você nem precisará periodicamente "esvaziar sua lixeira". Você apenas sabe que tem uma janela de tempo para recuperar seus arquivos "lixeira", se necessário.

Observando a maioria dos serviços em nuvem existentes no mercado (Dropbox, Google Drive, Simplenote, ...), a maioria deles parece ter uma política semelhante para arquivos excluídos. Eu realmente acho que é a coisa certa a fazer com seus arquivos, e eles parecem pensar assim.

gerlos
fonte
1
Eu uso este software desde que você postou sua resposta aqui. É muito bom Estou satisfeito com isso. Eu recomendo. Era exatamente isso que eu estava procurando. Obrigado pela sua resposta.
precisa saber é o seguinte
1
Uma boa adição a essa lista é trash-cliuma ferramenta de lixo da linha de comando semelhante a autotrash, que permite enviar arquivos para o lixo, mesmo a partir da linha de comando. Consulte webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html e github.com/andreafrancia/trash-cli
gerlos
O RecycleBinEx funcionará no Windows 10? Parece não ser um recurso padrão oferecido no Windows 10.
still_dreaming_1
1
@ still_dreaming_1 A última vez que tentei (há alguns meses), RecycleBinExparecia funcionar no Windows 10. Mas não o uso como meu sistema principal, por isso não sei dizer se ele ainda funciona com as atualizações recentes do sistema.
gerlos
1
Acabei de experimentar o RecycleBinEx no Windows 10. A GUI tem um comportamento estranho - alguns arquivos na lixeira são exibidos com nomes de arquivo de um caractere - mas a opção da linha de comando para remover arquivos com mais de X dias parece funcionar bem. Para ver as opções da linha de comando, digite "RecycleBinEx.exe /?" na linha de comando.
Aaron
17

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 .ps1extensã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-ExecutionPolicypara mais informações.

Agora abra o Agendador de tarefas e crie uma nova tarefa com os seguintes parâmetros:

  1. Na guia "Geral", digite um nome e marque a opção "Executar com mais privilégios"
  2. Na guia "Triggers", adicione um novo gatilho e defina a tarefa para ser executada diariamente
  3. 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"
  4. 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 FileSystemparâ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-PSDrivee 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 $Recyclecomo 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 -Forceparâmetro é necessário para ir para as pastas ocultas e do sistema, e o -Recurseparâ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 SilentlyContinuefaz 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, LastWriteTimenesse caso , a propriedade refere-se à data e hora em que o arquivo foi excluído. Get-Dateretorna a data atual.

Para mais informações, consulte Get-Help Where-Objecte Get-Help Get-Date.

Remove-Item -Recurse

Isso simplesmente exclui os itens passados ​​a ele pelo comando anterior. O -Recurseparâ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.

Indrek
fonte
Eu organizei isso. Muito obrigado por explicar isso com muitos detalhes.
precisa saber é o seguinte
3
Como alternativa à criação globalmente a política de execução, você pode criar uma linha de comando que define-lo para o processo: powershell -ExecutionPolicy RemoteSigned -File .\myscript.ps1.
precisa saber é o seguinte
A Lixeira na exibição de detalhes do explorador possui uma coluna especial: "Data de exclusão", gostaria de saber como podemos filtrar usando isso? LastWriteTime não é a mesma coisa, por qualquer meio.
Ciantic
Falou cedo demais, encontrou o seguinte: baldwin-ps.blogspot.fi/2013/07/… também possui uma "Data excluída".
Ciantic
4

A Lixeira do Windows exclui automaticamente os arquivos mais antigos quando atinge o tamanho máximo: O que acontece quando a Lixeira ocupa o espaço alocado?

Você pode controlar isso nas propriedades da Lixeira

insira a descrição da imagem aqui

Matthew Lock
fonte
1
Essa resposta não responde à pergunta, pois esse mecanismo não leva em consideração a idade específica dos arquivos; ele exclui apenas os arquivos mais antigos da idade arbitrária para manter um volume predefinido de dados.
27616 Jonathan