Windows 10 имеет встроенные функции для освобождения места путем удаления старых файлов в %temp% каталог и Downloads папки. В настройках Windows 10 есть опция («Хранилище»), которая автоматически удаляет временные файлы, которые не используются вашими приложениями, файлы в загрузках, которые не были изменены в течение последних x дней, или файлы, хранящиеся в корзине в течение x дней.

Кроме того, инструмент очистки диска очищает файлы в %temp% каталог, к которому не обращались в течение последних 7 дней.
Однако параметры очистки диска и хранилища предназначены только для %temp% а также Downloads папки. Чтобы удалить файлы, которые старше определенного количества дней, в «пользовательской» папке, например Documents папку, вам нужно использовать один из этих трех методов:
Как автоматически удалять файлы старше N дней в Windows
Некоторые из методов, приведенных ниже, позволяют использовать свойство «дата создания» или «дата изменения» файлов в качестве базового уровня для определения «старых» файлов в соответствии с вашими потребностями.
Способ 1. Удалите файлы старше «N» дней с помощью проводника
Используя Windows Search, вы можете легко получить список файлов на основе выбранного диапазона дат или файлов старше определенной даты.
- Откройте папку, в которой вы хотите удалить старые файлы.
- Нажмите на поле поиска или нажмите кнопку F3 на клавиатуре.
- Нажмите кнопку «Дата изменения» и выберите один из раскрывающихся вариантов, например «Последняя неделя».

- Windows Search отфильтрует результаты мгновенно. Выберите файлы, которые вы хотите удалить, и нажмите клавишу Delete на клавиатуре.
Важный: По умолчанию Windows выполняет поиск файлов в текущей папке и во всех подпапках. Чтобы ограничить поиски только текущая папка, нажмите кнопку «Текущая папка» на панели инструментов поиска / на ленте.
Расширенный поиск Запрос: «Дата» Операторы
Если предустановленный диапазон дат вам не подходит, вы можете ввести собственный поисковый запрос. В поле поиска введите следующее, чтобы отфильтровать файлы из настраиваемого диапазона дат:
datemodified:1/1/2017 .. 12/31/2017
Это находит файлы, которые были изменены в течение указанного диапазона дат. Вы также можете использовать datecreated: dateaccessed: или date: (особенно для изображений с камеры) операторов. Обратите внимание, что date: Оператор использует метаданные даты (EXIF), записанные камерой.
СВЯЗАННЫЙ: Как искать файлы, созданные между двумя датами в Windows
Чтобы найти файлы, которые не были изменены после 1 ноября 2017 года, используйте меньше чем (<) символ с datemodifed: оператор, как показано ниже:
datemodified:<11/1/2017

Выберите файлы из списка и удалите их.
Чаевые: Вместо того, чтобы вводить диапазон дат вручную, введите datemodified: или datecreated: или dateaccessed: или date: оператор в поле поиска, и пусть File Explorer покажет вам выбор даты. Затем вы можете выбрать дату или диапазон дат из всплывающего окна. Чтобы указать диапазон дат, выберите первую дату и перетащите курсор в соответствующее поле.
Если вы хотите удалять старые файлы автоматически, а не выполнять поисковый запрос каждый раз, вам нужно создать командный файл или PowerShell.
Способ 2: удаление файлов старше, чем N дней с использованием командной строки
ForFiles Консольный инструмент (в Windows 7, Windows 8, Windows 8.1 и Windows 10) выбирает файл или набор файлов и выполняет команду для этого файла или набора файлов.
Forfiles Help -- Command-line switches /P - Indicates the path to start searching. The default folder is the current working directory (.). /S - Instructs forfiles to recurse into subdirectories. Like "DIR /S". /D - Select files with a last modified date. For example,-365 means over a year ago, -30 means a month ago. /C "command" - Indicates the command to execute for each file. Command strings should be wrapped in double quotes. The default command is "cmd /c echo @file". The following variables can be used in the command string: @file - returns the name of the file. @fname - returns the file name without extension. @ext - returns only the extension of the file. @path - returns the full path of the file. @relpath - returns the relative path of the file. @isdir - returns "TRUE" if a file type is a directory, and "FALSE" for files. @fsize - returns the size of the file in bytes. @fdate - returns the last modified date of the file. @ftime - returns the last modified time of the file.
Чтобы просмотреть весь список аргументов командной строки, поддерживаемых этим инструментом, введите FORFILES /? в командной строке.
Чтобы найти и удалить файлы старше определенного количества дней, используя ForFiles, откройте окно командной строки и введите одну из следующих команд:
ForFiles /p "D:\My Scripts" /s /d -30 /c "cmd /c del @path"
-или-
ForFiles /p "D:\My Scripts" /s /d -30 /c "cmd /c del @file"

Выше предполагается, что путь к папке D:\My Scripts и вы хотите удалить файлы старше 30 дней. Настройте путь к папке и количество дней в соответствии с вашими потребностями.
Вы не увидите выходного сообщения, если команда выполнена успешно. Если ни один файл не соответствует указанным критериям, вы увидите сообщение ОШИБКА: не найдено файлов с указанными критериями поиска.
Дополнительный совет: Чтобы выполнить пробный прогон перед попыткой удаления файлов, чтобы проверить, какие файлы подвержены указанным критериям, замените команду del с echo, как показано ниже:
ForFiles /p "D:\My Scripts" /s /d -30 /c "cmd /c echo @path"
-или-
ForFiles /p "D:\My Scripts" /s /d -30 /c "cmd /c echo @file"

При желании вы можете создать командный файл с помощью приведенной выше команды. Или для автоматического запуска команды с заданными интервалами с помощью планировщика заданий.
Запустите команду автоматически с помощью планировщика заданий
- Запустите планировщик задач.
- В планировщике заданий нажмите «Библиотека планировщика заданий»
- Нажмите ссылку «Создать задачу» на правой панели.
- В диалоговом окне «Создать задачу» выберите вкладку «Общие».
- Упомяните название задачи, скажем «Удалить старые файлы в Моих документах»
- Перейдите на вкладку «Триггеры» и нажмите «Создать».
- Выберите «По расписанию» в раскрывающемся списке под раскрывающимся списком «Начать задачу».
- Вы можете запускать задачу ежедневно, еженедельно или ежемесячно. Если вы выбираете еженедельно, выберите дни недели, когда вы хотите запускать задачу.
- После этого нажмите кнопку ОК.
- Перейдите на вкладку «Действия» и нажмите кнопку «Создать…».
- В окне «Новое действие» заполните следующее:
Action: Start a program Program/script: C:\Windows\System32\ForFiles.exe Add arguments (optional): /p "%userprofile%\Documents" /s /d -30 /c "cmd /c del @file"

- Нажмите ОК.
Создается новая задача, которая при запуске удаляет файлы в вашем Documents папка, которая не была изменена за последние 30 дней.
Способ 3: удалить файлы старше N дней с помощью скрипта
Пользователи форума Spiceworks имеют VBScripts, которые могут рекурсивно удалять файлы старше N дней по указанному пути к папке. Вот простой скрипт:
On Error Resume Next
Set oFileSys = WScript.CreateObject("Scripting.FileSystemObject")
sRoot = "C:\Path To Old Files" 'Path root to look for files
today = Date
nMaxFileAge = 3 'Files older than this (in days) will be deleted
DeleteFiles(sRoot)
Function DeleteFiles(ByVal sFolder)
Set oFolder = oFileSys.GetFolder(sFolder)
Set aFiles = oFolder.Files
Set aSubFolders = oFolder.SubFolders
For Each file in aFiles
dFileCreated = FormatDateTime(file.DateCreated, "2")
If DateDiff("d", dFileCreated, today) > nMaxFileAge Then
file.Delete(True)
End If
Next
For Each folder in aSubFolders
DeleteFiles(folder.Path)
Next
End Function
Источник: Удалить старые файлы и пустые подпапки - Центр сценариев - Spiceworks
ВАЖНЫЙ!Приведенный выше скрипт учитывает свойство «Дата создания» элементов вместо «Дата последнего изменения». Если вы хотите удалить файлы, которые не были модифицированный за последние N дней измените следующую строку в скрипте:
dFileCreated = FormatDateTime(file.DateCreated, "2")
в
dFileCreated = FormatDateTime(file.DateLastModified, "2")
Он очищает файлы старше 3 дней. Все, что вам нужно сделать, это изменить путь к папке Максимальные параметры возраста файла, как требуется в сценарии, сохраните его с .vbs расширение и запустить его. Обратите внимание, что скрипт работает с указанными папками и подпапками рекурсивно.
Вот еще один скрипт, который удаляет файлы старше N дней и автоматически рекурсивно очищает пустые подпапки. См. Удаление файлов старше максимального возраста (в днях) - Центр сценариев - Spiceworks
СВЯЗАННЫЙ: Как быстро находить и удалять пустые папки в Windows
Способ 4: удаление файлов старше n дней с помощью PowerShell
Третий вариант - использовать PowerShell, который имеет полезный командлет для поиска и удаления старых файлов.
Запустить PowerShell (powershell.exe)и введите следующую команду:
Get-ChildItem -Path [folder_path] -File -Recurse -Force | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))}| Remove-Item -ForceПример:
Get-ChildItem -Path "D:\Reports" -File -Recurse -Force | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))}| Remove-Item -ForceИспользовать пути, содержащие переменную окружения, например %userprofile%\documentsиспользуйте синтаксис ниже:
Get-ChildItem -Path "$env:userprofile\documents" -File -Recurse -Force | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))}| Remove-Item -Force(Заметка: Имя папки в примере соответствует вашему профилю пользователя. Documents папки. Измените имя и путь к папке соответственно вашим потребностям.)
Так как мы использовали -File параметр, он работает только для файлов. Таким образом, папки, которые не были записаны за последние n дней, не могут быть удалены.
Указанная команда состоит из трех частей:
-
Get-ChildItemКомандлет получает список файлов в папке «Документы». - Затем вывод передается в
Where-ObjectКомандлет, чтобы выполнить фильтрацию, выбирая только файлы, которые не были изменены в последнемxколичество дней (в этом примере30 days). - Наконец, мы передаем вывод в
Remove-Itemкомандлет, который, в свою очередь, удаляет те старые файлы, которые были возвращены предыдущими двумя командлетами.
Совет 1: список подходящих файлов, не удаляете их?
Чтобы вывести список подходящих файлов и папок, не удаляя их, | Remove-Item переключатель.
Get-ChildItem -Path [folder_path] -File -Recurse -Force | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))}Совет 2: подавление ошибок при удалении элементов
Чтобы запретить отображение сообщений об ошибках (при доступе к элементам или их удалении) в консоли, добавьте -ErrorAction SilentlyContinue параметр.
Get-ChildItem -Path [folder_path] -File -Recurse -Force | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item -ErrorAction SilentlyContinue -ForceУдалить старые файлы, а также папки
Обратите внимание, что приведенные выше команды удаляют только старые файлы, но не подпапки, которые не были записаны в последнем x дней. Чтобы удалить старые папки, бросьте -File аргумент в из ранее объясненных команд.
Пример:
Get-ChildItem -Path "$env:userprofile\documents" -Recurse -Force | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))}| Remove-Item -Force(См. Документацию по командлетам Get-ChildItem на сайте Microsoft)
Важный: -Recurse параметр указывает PowerShell рекурсивно получать файлы (в подкаталогах). Чтобы предотвратить поиск файлов в подпапках, удалите -Recurse опция, так что обрабатывается только текущая папка.

