Автоматически удалять старые файлы из корзины, сохраняя новые?


25

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

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

Есть ли такое программное обеспечение?


Возможно, вместо того, чтобы установить ограничение по времени, вы могли бы сделать так, чтобы Корзина автоматически удаляла самые старые элементы, когда был достигнут определенный размер ? Будет ли это приемлемым?
Уильям Джексон

3
@WilliamJackson Это может быть решением для тех, кто имеет ограниченное пространство на жестком диске. Но в моем случае я хочу убедиться, что не пожалею об очистке файла утилизации из-за потери недавно удаленного файла. С этой системой я просто забуду о корзине, она автоматически очистится, и у меня будет достаточно времени, чтобы восстановить удаленный файл, если я потом пожалею об этом.
hkBattousai

1
В мире GNU / Linux, KDE имеет эту функцию, и я думаю, что она отлично подходит для удобства использования. Почему я должен хранить в корзине файлы, скажем, более 1 месяца? Этот подход не загромождает мусорное ведро старыми файлами, которые вам больше не нужны, поэтому гораздо проще найти и восстановить один или несколько файлов, когда вам это нужно (очень полезно, если вы много работаете с текстом файлы, которые всегда маленькие) и не тратят место на диске с файлами, которые вам больше не нужны.
Герлос

Это не дополнение для проводника, и это всего лишь 24 часа, но у CCleaner есть эта опция i.imgur.com/JaeJhzU.png
Мэтью Локк

Ответы:


9

RecycleBinEx - это простое приложение для Windows, которое делает именно то, что вы просите. Смотрите: http://www.fcleaner.com/recyclebinex

На Mac OSX Хейзел делает то же самое (среди прочих): http://www.noodlesoft.com/

KDE Plasma поставляет эту функцию по умолчанию , поэтому, если вы работаете с KDE, Kubuntu, Arch, Chackra Linux или любым другим дистрибутивом, у вас уже есть эта функция. Достаточно взглянуть на окно конфигурации Dolphin.

В Ubuntu Unity, Gnome или любой другой среде рабочего стола gnu / linux, предоставляющей стандартную функцию корзины FreeDesktop.org, вы можете использовать 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. У GUI странное поведение - некоторые файлы в корзине отображаются с именами из одного символа, но опция командной строки для удаления файлов старше 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» или «yes». Смотрите 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

В корзине с подробным обзором проводника есть специальный столбец: «Дата удалена». Интересно, как мы можем фильтровать, используя это? LastWriteTime - это не одно и то же.
Ciantic

Говорил слишком рано, нашел это: baldwin-ps.blogspot.fi/2013/07/… там также есть «Дата удалена».
Ciantic

4

Корзина Windows автоматически удаляет старые файлы, когда достигает максимального размера. Что происходит, когда корзина занимает выделенное место?

Вы можете контролировать это из свойств Recylce Bin

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


1
Этот ответ не отвечает на вопрос, так как этот механизм не учитывает конкретный возраст файлов; он удаляет только самые старые файлы произвольного возраста, чтобы сохранить заданный объем данных.
Джонатан Дж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.