25

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

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

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

4 ответа4

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 также имеет псевдоприводы для различных других вещей, таких как кусты реестра.

Для получения дополнительной информации см. 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.

8

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

На Mac OSX Hazel делает то же самое (среди прочих): 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, ...), большинство из них, похоже, имеют аналогичную политику для удаленных файлов. Я действительно думаю, что это правильно делать с вашими файлами, и они, кажется, так считают.

4

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

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

4

Обновление: я заметил, что Windows не удаляет мои файлы корзины после 30 дней. Очевидно, эта функция активируется только тогда, когда у вас мало места на диске. Я собираюсь сохранить этот ответ как не делай этого.


Windows 10 имеет эту встроенную функцию:

  1. Нажмите клавишу Win и найдите хранилище
  2. Нажмите на хранилище (настройки системы)
  3. Включите функцию хранения чувства
  4. Нажмите на ссылку Изменить способ освобождения места
  5. Убедитесь, что опция Удалить файлы, которые были в корзине более 30 дней, включена

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .