Czy automatycznie usuwasz stare pliki z kosza, zachowując nowe?

25

Chcę dodatek explorer, który po pewnym czasie usunie stare pliki z kosza na śmieci.

Na przykład chcę ustawić limit czasu na 30 dni. Kiedy usuwam plik w systemie Windows, oprogramowanie będzie zapisywać czas jego usuwania. Każdego dnia skanuje w poszukiwaniu usuniętego pliku, którego wiek osiągnął 30 dni, i usuwa, jeśli taki istnieje.

Czy jest takie oprogramowanie?

hkBattousai
źródło
Być może zamiast ustawiania limitu czasu Kosz mógł automatycznie usuwać najstarsze elementy po osiągnięciu określonego limitu rozmiaru ? Czy byłoby to do przyjęcia?
William Jackson,
3
@WilliamJackson To może być rozwiązanie dla tych, którzy mają ograniczone miejsce na dysku twardym. Ale w moim przypadku chcę się upewnić, że nie będę żałować opróżnienia pliku recyklingu z powodu utraty niedawno usuniętego pliku. Dzięki temu systemowi po prostu zapomnę o koszu, opróżni się on sam i będę miał dużo czasu na odzyskanie usuniętego pliku, jeśli później go żałuję.
hkBattousai
1
W świecie gnu / linux KDE ma tę funkcję i myślę, że jest świetna pod względem użyteczności. Dlaczego powinienem przechowywać pliki w koszu na śmieci przez, powiedzmy, 1 miesiąc? Takie podejście nie zaśmieca kosza ze starymi plikami, które nie będą już dla Ciebie istotne, więc o wiele łatwiej jest znaleźć i odzyskać jeden lub więcej plików, gdy ich potrzebujesz (naprawdę przydatne, jeśli pracujesz dużo tekstu z tekstem pliki, które zawsze są małe) i nie marnują miejsca na dysku z plikami, które nie są już dla Ciebie przydatne.
gerlos
To nie jest dodatek odkrywcy i to tylko 24 godziny, ale CCleaner ma tę opcję i.imgur.com/JaeJhzU.png
Matthew Lock

Odpowiedzi:

9

RecycleBinEx to prosta aplikacja dla systemu Windows, która robi dokładnie to, o co prosisz. Zobacz: http://www.fcleaner.com/recyclebinex

W Mac OSX Hazel robi to samo (między innymi): http://www.noodlesoft.com/

KDE Plasma dostarcza tę funkcję jako domyślną , więc jeśli korzystasz z Kubuntu, Arch, Chackra Linux lub innej dystrybucji z KDE, masz już tę funkcję. Wystarczy spojrzeć na okno konfiguracji Dolphin.

W systemie Ubuntu Unity, Gnome lub dowolnym innym środowisku graficznym GNU / Linux udostępniającym standardową funkcję kosza FreeDesktop.org możesz użyć AutoTrash, aby to zrobić: http://www.logfish.net/pr/autotrash/
Podobne zachowanie można również osiągnąć z trash-cli , którego można również użyć do wysyłania plików do kosza bezpośrednio z wiersza poleceń. Zobacz: https://github.com/andreafrancia/trash-cli

Większość dostępnych aplikacji e-mail ma tę funkcję do „kosza”.

W systemie Android domyślnie nie ma „kosza na śmieci” (po jego usunięciu zniknął na zawsze), ale możesz zainstalować aplikacje takie jak Dumpster, aby (jakoś) uzyskać podobne funkcje: http://www.dumpsterapp.mobi/

Jak wspomniano powyżej, myślę, że automatyczne usuwanie starych plików z kosza jest świetną funkcją, która sprawia, że ​​jest bardziej użyteczny , ponieważ zmniejsza bałagan (czy te pliki, które zgubiłeś 3 miesiące temu, nadal są dla ciebie odpowiednie? plik?) i ułatwia znalezienie tego, co chcesz odzyskać (w końcu jest to powód posiadania „kosza na śmieci” na naszych komputerach), nadal będąc bezpiecznym.

Jest to nawet bardziej przydatne, jeśli dużo pracujesz z plikami tekstowymi (kodem lub prozą), które przez większość czasu są małe i nie potrzebują dużo miejsca (więc mogą nigdy nie osiągnąć limitu kosza). W ten sposób nie będziesz nawet musiał okresowo „opróżniać kosza”. Po prostu wiesz, że masz czas na odzyskanie „zniszczonych” plików, jeśli zajdzie taka potrzeba.

Patrząc na większość dostępnych usług chmurowych (Dropbox, Dysk Google, Simplenote, ...), większość z nich wydaje się mieć podobne zasady dotyczące usuniętych plików. Naprawdę uważam, że to właściwe z twoimi plikami i wydaje się, że tak myślą.

gerlos
źródło
1
Korzystam z tego oprogramowania, odkąd opublikowałeś tutaj swoją odpowiedź. To jest całkiem dobre. Jestem z tego zadowolony. Polecam to. Właśnie tego szukałem. Dzięki za odpowiedź.
hkBattousai
1
Fajnym dodatkiem do tej listy jest trash-clipodobne narzędzie autotrashdo śmieci z wiersza poleceń, które pozwala wysyłać pliki do kosza nawet z wiersza poleceń. Zobacz webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html i github.com/andreafrancia/trash-cli
gerlos
Czy RecycleBinEx będzie działał w systemie Windows 10? Wydaje się, że nie jest to domyślna funkcja oferowana w systemie Windows 10.
still_dreaming_1
1
@ still_dreaming_1 ostatnim razem, gdy próbowałem (kilka miesięcy temu), RecycleBinExwydawało się , że działa w systemie Windows 10. Ale nie używam go jako mojego głównego systemu, więc nie wiem, czy nadal działa z najnowszymi aktualizacjami systemu.
gerlos
1
Właśnie próbowałem RecycleBinEx na Windows 10. GUI ma dziwne zachowanie - niektóre pliki w koszu są wyświetlane z jednoznakowymi nazwami plików - ale opcja wiersza polecenia usuwania plików starszych niż X dni wydaje się działać dobrze. Aby wyświetlić opcje wiersza polecenia, wpisz „RecycleBinEx.exe /?” w wierszu poleceń.
Aaron
17

Nie znam żadnych dodatków Explorer, ale podobnie jak większość rzeczy w systemie Windows, można to zrobić za pomocą programu 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
}

Zapisz ten skrypt jako plik tekstowy z .ps1rozszerzeniem. Następnie możesz użyć Harmonogramu zadań, aby uruchamiać to w regularnych odstępach czasu.

Najpierw jednak musisz zezwolić na wykonywanie skryptów PowerShell, ponieważ domyślnie możesz wykonywać tylko polecenia wpisane bezpośrednio w monicie PowerShell. Aby to zrobić, otwórz PowerShell i wpisz następujące polecenie:

Set-ExecutionPolicy RemoteSigned

Po wyświetleniu monitu wpisz „y” lub „tak”. Zobacz Get-Help Set-ExecutionPolicywięcej informacji.

Teraz otwórz Harmonogram zadań i utwórz nowe zadanie z następującymi parametrami:

  1. Na karcie „Ogólne” wpisz nazwę i zaznacz opcję „Uruchom z najwyższymi uprawnieniami”
  2. Na karcie „Wyzwalacze” dodaj nowy wyzwalacz i ustaw uruchamianie zadania codziennie
  3. Na karcie „Działania” dodaj nową akcję:
    • pozostaw typ „Uruchom program”
    • ustaw pole „Program / skrypt” na C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    • ustaw pole „Dodaj argumenty” na -NonInteractive -File "C:\path\to\script.ps1"
  4. Na karcie „Warunki” usuń zaznaczenie opcji „Uruchom zadanie tylko wtedy, gdy komputer jest zasilany prądem przemiennym”

Objaśnienie skryptu wiersz po wierszu:

ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {

Spowoduje to wyświetlenie listy wszystkich dysków w komputerze i pętli jeden po drugim. Ten -PSProvider FileSystemparametr jest wymagany tylko do zwracania napędów dysków, ponieważ PowerShell ma również pseudodyski do różnych innych rzeczy, takich jak gałęzie rejestru.

Aby uzyskać więcej informacji, zobacz Get-Help Get-PSDrivei ten poradnik na przetwarzanie pętlowe w PowerShell .

$Path = $Drive.Name + ':\$Recycle.Bin'

To konstruuje ścieżkę do folderu Kosz na bieżącym dysku. Zwróć uwagę na użycie pojedynczych cudzysłowów wokół drugiej części, aby zapobiec interpretacji programu PowerShell $Recyclejako zmiennej.

Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |

Zwraca wszystkie pliki i podfoldery pod podaną ścieżką (tą, którą zbudowaliśmy za pomocą poprzedniego polecenia). -ForceParametr jest potrzebne, aby przejść do folderów ukrytych i systemowych, a -Recurseparametr sprawia rekurencyjnego polecenia, tzn. przeglądaj także wszystkie podkatalogi. -ErrorActionjest standardowym parametrem dla większości poleceń PowerShell, a wartość SilentlyContinuepowoduje, że polecenie ignoruje błędy. Ma to na celu zapobieganie błędom dla dysków skonfigurowanych do natychmiastowego usuwania plików. |Symbol na samych rur wyniki do następnego polecenia; Podzieliłem go na kilka wierszy dla lepszej czytelności.

Aby uzyskać więcej informacji, zobacz Get-Help Get-ChildItem.

Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |

To po prostu filtruje wyniki z poprzedniego polecenia i zwraca tylko te, które są starsze niż 30 dni. $_odnosi się do aktualnie przetwarzanego obiektu, a LastWriteTimewłaściwość w tym przypadku odnosi się do daty i godziny usunięcia pliku. Get-Datezwraca bieżącą datę.

Aby uzyskać więcej informacji, zobacz Get-Help Where-Objecti Get-Help Get-Date.

Remove-Item -Recurse

To po prostu usuwa elementy przekazane mu przez poprzednie polecenie. Ten -Recurseparametr automatycznie usuwa zawartość niepustych podfolderów; bez niego zostaniesz poproszony o takie foldery.

Aby uzyskać więcej informacji, zobacz Get-Help Remove-Item.

Indrek
źródło
Ustawiłem to. Dziękuję bardzo za wyjaśnienie tego tak szczegółowo.
hkBattousai
3
Alternatywnie do globalnie ustawienie polityki realizacji, można utworzyć wiersz polecenia ustawia go do procesu: powershell -ExecutionPolicy RemoteSigned -File .\myscript.ps1.
jpmc26
Kosz w widoku szczegółów eksploratora ma specjalną kolumnę: „Data usunięcia”. Zastanawiam się, jak zamiast tego możemy filtrować? LastWriteTime w żadnym wypadku nie jest tym samym.
Ciantic
Mówiłem za wcześnie, okazało się, że: baldwin-ps.blogspot.fi/2013/07/… ma również „Data usunięcia ”.
Ciantic
4

Kosz Windows automatycznie usuwa starsze pliki, gdy osiągnie maksymalny rozmiar: Co się stanie, gdy Kosz zajmie przydzielone miejsce?

Możesz to kontrolować za pomocą właściwości Recylce Bin

wprowadź opis zdjęcia tutaj

Matthew Lock
źródło
1
Ta odpowiedź nie odpowiada na pytanie, ponieważ ten mechanizm nie uwzględnia określonego wieku plików; usuwa tylko najstarsze pliki o dowolnym wieku, aby zachować ustaloną ilość danych.
Jonathan J