Автоматичне видалення старих файлів із сміттєвого кошика, зберігаючи нові?


25

Я хочу надбудову Explorer, який видалить старі файли з кошика для переробки через певний проміжок часу.

Наприклад, я хочу встановити обмеження часу на 30 днів. Коли я видаляю файл у Windows, програмне забезпечення буде вести облік часу його видалення. Кожен день він скануватиме видалений файл, вік якого досяг 30 днів, та видалить, якщо такий є.

Чи є таке програмне забезпечення?


Можливо, замість того, щоб встановити обмеження часу, ви могли б змусити кошик автоматично видаляти найстаріші елементи, коли буде досягнуто певного обмеження розміру ? Це було б прийнятно?
Вільям Джексон

3
@WilliamJackson Це може бути рішенням для тих, хто має обмежений простір на жорсткому диску. Але в моєму випадку я хочу переконатися, що я не пошкодую про видалення файлу для переробки через втрату нещодавно видаленого файлу. З цією системою я просто забуду про кошик, він автоматично випорожниться, і у мене буде достатньо часу для відновлення видаленого файлу, якщо я випадково пошкодую про це згодом.
hkBattousai

1
У світі gnu / linux KDE має цю функцію, і я думаю, що це чудово для зручності використання. Чому я повинен зберігати файли у смітнику більше, ніж, скажімо, 1 місяць? Такий підхід не захаращує ваш кошик зі старими файлами, які більше не стосуються вас, тому набагато простіше знайти та відновити один чи більше файлів, коли вам це потрібно (дуже корисно, якщо ви працюєте з великим дотепним текстом файли, які завжди малі), і не витрачайте дисковий простір на файли, які вам більше не корисні.
gerlos

Це не додаток для дослідників, і це лише 24 години, але у CCleaner є така опція i.imgur.com/JaeJhzU.png
Метью Блокування

Відповіді:


9

RecycleBinEx - це проста програма для Windows, яка робить саме те, що ви просите. Дивіться: http://www.fcleaner.com/recyclebinex

У Mac OSX Hazel робить те саме (серед інших): http://www.noodlesoft.com/

KDE Plasma надає цю функцію за замовчуванням , тому якщо ви використовуєте Kubuntu, Arch, Chackra Linux або будь-який інший дистрибутив з KDE, у вас вже є ця функція. Подивіться на вікно налаштування Dolphin.

У Ubuntu Unity, Gnome або будь-якому іншому середовищі робочого столу gnu / linux, що забезпечує стандартну функцію FreeDesktop.org Trash, ви можете використовувати AutoTrash для цього: http://www.logfish.net/pr/autotrash/
Подібна поведінка також може бути виконана з trash-cli , який також може бути використаний для надсилання файлів у смітник прямо з командного рядка. Дивіться: https://github.com/andreafrancia/trash-cli

Більшість програм електронної пошти там також мають цю функцію для свого "кошика".

На Android за замовчуванням не існує кошика для сміття (коли ви видаляєте його, він назавжди зник), але ви можете встановити додатки на зразок Dumpster, щоб (якось) отримати подібні функції: http://www.dumpsterapp.mobi/

Як було сказано вище, я думаю, що старі файли зі сміття автоматично видаляються автоматично чудовою особливістю зробити його більш корисним , оскільки це зменшує безлад (чи ті файли, які ви потрапили 3 місяці тому, все ще стосуються вас? І ВСІ ці старі версії того самого файл?) і полегшує пошук того, що ви хочете відновити (це є причиною того, що на наших комп’ютерах зрештою є "сміттєвий контейнер"), зберігаючи безпеку.

Це ще корисніше, якщо ви багато працюєте з текстовими файлами (кодом або прозою), що більшість часу невеликі і не потребують багато місця (тому, можливо, ніколи не дістанеться до вашої квоти сміття). Таким чином, вам навіть не потрібно буде періодично "спорожнювати кошик". Ви просто знаєте, що у вас є вікно часу для відновлення "пошкоджених" файлів, якщо вам потрібно.

Переглядаючи більшість хмарних сервісів там (Dropbox, Google Drive, Simplenote, ...), схоже, більшість з них мають схожу політику щодо видалених файлів. Я дійсно думаю, що це правильне відношення до ваших файлів, і вони, здається, так вважають.


1
Я використовую це програмне забезпечення, оскільки ви розмістили тут свою відповідь. Це досить добре. Я цим задоволений. Рекомендую. Це саме те, що я шукав. Дякую за вашу відповідь.
hkBattousai

1
Приємним доповненням до цього списку є trash-cliінструмент для сміття командного рядка, подібний до того autotrash, що дозволяє надсилати файли у кошик навіть із командного рядка. Дивіться webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html та github.com/andreafrancia/trash-cli
gerlos

Чи буде RecycleBinEx працювати в Windows 10? Здається, це не функція за замовчуванням, пропонована в Windows 10.
still_dreaming_1

1
@ still_dreaming_1 востаннє, коли я намагався (кілька місяців тому), RecycleBinExздавалося, працює в Windows 10. Але я не використовую його як основну систему, тому не можу сказати, чи все ще працює з останніми оновленнями системи.
герлос

1
Я щойно спробував RecycleBinEx в Windows 10. Графічний інтерфейс користується дивним поведінкою - деякі файли в кошику відображаються з односимвольними іменами файлів - але варіант командного рядка для видалення файлів, старших X днів, здається, працює нормально. Щоб побачити параметри командного рядка, введіть "RecycleBinEx.exe /?" у командному рядку.
Аарон

17

Я не знаю жодних додатків Explorer, але, як і більшість речей у Windows, це можна зробити за допомогою 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
}

Збережіть цей скрипт як текстовий файл із .ps1розширенням. Потім ви можете використовувати Планувальник завдань, щоб запускати це через рівні проміжки часу.

По-перше, вам потрібно дозволити виконання скриптів PowerShell, тому що за замовчуванням ви можете виконувати лише команди, введені безпосередньо в запит PowerShell. Для цього відкрийте PowerShell і введіть таку команду:

Set-ExecutionPolicy RemoteSigned

Коли буде запропоновано, введіть "y" або "так". Див. Для Get-Help Set-ExecutionPolicyотримання додаткової інформації.

Тепер відкрийте Планувальник завдань і створіть нове завдання з такими параметрами:

  1. На вкладці "Загальні" введіть ім'я та встановіть прапорець "Виконати з найвищими привілеями"
  2. На вкладці "Тригери" додайте новий тригер і встановіть завдання, яке потрібно виконувати щодня
  3. На вкладці "Дії" додайте нову дію:
    • залиште тип як "Запустити програму"
    • встановіть поле "Програма / сценарій" на C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    • встановіть поле "Додати аргументи" на -NonInteractive -File "C:\path\to\script.ps1"
  4. На вкладці "Умови" зніміть прапорець "Почати завдання лише в тому випадку, якщо комп'ютер живиться від змінного струму"

Покрокове пояснення сценарію:

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

Тут виходить перелік усіх накопичувачів на комп’ютері і циклічно проходить через них. -PSProvider FileSystemПараметр необхідний тільки дисководи повернення, тому що PowerShell також pseudodrives для різних інших речей , як вулика реєстру.

Для отримання додаткової інформації див Get-Help Get-PSDriveі це керівництво по обробці петель в PowerShell .

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

Це будує шлях до папки Кошик на поточному диску. Зверніть увагу на використання одиничних лапок навколо другої частини, щоб запобігти інтерпретації PowerShell $Recycleяк змінної.

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

Це повертає всі файли та підпапки під заданим шляхом (той, який ми сконструювали з попередньою командою). -ForceПараметр необхідний , щоб увійти в приховані і системні папки, а -Recurseпараметр робить команду рекурсивної, тобто. проходьте також через усі підкаталоги. -ErrorActionє стандартним параметром для більшості команд PowerShell, і значення SilentlyContinueробить команду ігнорувати помилки. Метою цього є запобігання помилок на дисках, налаштованих для негайного видалення файлів. |Символ в самому кінці труби результати до наступної команді; Я розділив його на кілька рядків для кращої читабельності.

Для отримання додаткової інформації див Get-Help Get-ChildItem.

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

Це просто фільтрує результати з попередньої команди і повертає лише ті, які старші 30 днів. $_відноситься до об'єкта, який зараз обробляється, а LastWriteTimeвластивість у цьому випадку посилається на дату та час видалення файлу. Get-Dateповертає поточну дату.

Для отримання додаткової інформації див Get-Help Where-Objectі Get-Help Get-Date.

Remove-Item -Recurse

Це просто видаляє елементи, передані йому попередньою командою. -RecurseПараметр автоматично видаляє вміст непустих вкладених папок; без цього вам будуть запропоновані такі папки.

Для отримання додаткової інформації див Get-Help Remove-Item.


Я це налаштував. Дуже дякую, що пояснили це в цій деталі.
hkBattousai

3
Як альтернативи в глобальному масштабі настройки політики виконання, ви можете створити командний рядок , яка встановлює його для процесу: powershell -ExecutionPolicy RemoteSigned -File .\myscript.ps1.
jpmc26

Кошик для перегляду деталей про Explorer містить спеціальний стовпець: "Дата видалена", мені цікаво, як ми можемо фільтрувати, використовуючи це замість цього? LastWriteTime - це не одне й те саме.
Сімантичний

Говорили занадто рано, виявили це: baldwin-ps.blogspot.fi/2013/07/… у ній є "Дата видалена ".
Сімантичний

4

Кошик Windows автоматично видаляє старіші файли, коли він досягає максимального розміру: Що відбувається, коли кошик використовує виділений простір?

Ви можете керувати цим із властивостей кошика Recylce

введіть тут опис зображення


1
Ця відповідь не відповідає на запитання, оскільки цей механізм не враховує конкретний вік файлів; він видаляє лише найстаріші файли довільного віку для підтримки заданого обсягу даних.
Джонатан J
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.