Как автоматически удалить файлы старше N дней в Windows - Winhelponline

How Delete Files Older Than N Days Automatically Windows Winhelponline

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



параметры очистки параметров хранилища Windows 10



Кроме того, инструмент очистки диска очищает файлы в % темп% каталог, к которому не было доступа в последние 7 дней .



Однако очистка диска и Настройки хранилища нацеливаться только на % темп% и Загрузки папки. Чтобы удалить файлы старше определенного количества дней в «настраиваемой» папке, например, в вашей Документы папку, вам нужно использовать один из этих трех методов:

Как автоматически удалить файлы старше N дней в Windows

Некоторые из приведенных ниже методов позволяют использовать свойство файлов «дата создания» или «дата изменения» в качестве базового показателя для определения «более старых» файлов в соответствии с вашими потребностями.

Метод 1. Удалите файлы старше 'N' дней с помощью проводника.

Используя Windows Search, вы можете легко получить список файлов на основе выбранного диапазона дат или файлов старше определенной даты.



  1. Откройте папку, в которой вы хотите удалить старые файлы.
  2. Щелкните поле поиска или нажмите кнопку F3 на клавиатуре.
  3. Нажмите кнопку «Дата изменения» и выберите один из раскрывающихся вариантов, например «Прошлая неделя».
    удалять файлы старше x дней в windows
  4. Windows Search мгновенно отфильтрует результаты. Выберите файлы, которые вы хотите удалить, и нажмите клавишу Delete на клавиатуре.

Важный: По умолчанию поиск Windows ищет файлы в текущей папке И во всех подпапках. Чтобы ограничить поиск только текущая папка , нажмите кнопку «Текущая папка» на панели / ленте инструментов «Поиск».

Расширенный поисковый запрос: операторы «даты»

Если предварительно установленные варианты диапазона дат вам не подходят, вы можете ввести пользовательский поисковый запрос. В поле поиска введите следующее, чтобы отфильтровать файлы из настраиваемого диапазона дат:

дата изменения: 01.01.2017 .. 31.12.2017

Это находит файлы, которые были изменены в течение указанного диапазона дат. Вы также можете использовать Дата создания: дата доступа: или же свидание: (особенно для изображений с камеры) операторов. Обратите внимание, что свидание: Оператор использует метаданные даты (EXIF), записанные камерой.

СВЯЗАННЫЙ: Как искать файлы, созданные между двумя датами, в Windows

Чтобы найти файлы, которые не были изменены после 1 ноября 2017 г., используйте параметр 'меньше' ( < ) символ с datemodifed: оператор, как показано ниже:

datemodified:<11/1/‎2017

удалять файлы старше x дней в windows

Выберите файлы из списка и удалите их.

Наконечник: Вместо того, чтобы вводить диапазон дат вручную, введите Дата изменена: или же Дата создания: или же дата доступа: или же свидание: в поле поиска, и пусть Проводник покажет вам выбор даты. Затем вы можете выбрать дату или диапазон дат во всплывающем окне. Чтобы указать диапазон дат, выберите первую дату и перетащите курсор в соответствующее поле.

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


Метод 2: удалить файлы старше 'N' дней с помощью командной строки

В ForFiles Консольный инструмент (в Windows 7, Windows 8, Windows 8.1 и Windows 10) выбирает файл или набор файлов и выполняет команду для этого файла или набора файлов.

Справка Forfiles - Ключи командной строки / P - Указывает путь для начала поиска. Папка по умолчанию - это текущий рабочий каталог (.). / S - указывает для файлов рекурсивно переходить в подкаталоги. Как 'DIR / S'. / D - Выбрать файлы с датой последнего изменения. Например, -365 означает более года назад, -30 означает месяц назад. / C 'команда' - указывает команду для выполнения для каждого файла. Командные строки следует заключать в двойные кавычки. Команда по умолчанию - cmd / c echo @file. В командной строке можно использовать следующие переменные: @file - возвращает имя файла. @fname - возвращает имя файла без расширения. @ext - возвращает только расширение файла. @path - возвращает полный путь к файлу. @relpath - возвращает относительный путь к файлу. @isdir - возвращает «ИСТИНА», если тип файла является каталогом, и «ЛОЖЬ» для файлов. @fsize - возвращает размер файла в байтах. @fdate - возвращает дату последнего изменения файла. @ftime - возвращает время последнего изменения файла.

Чтобы просмотреть весь список аргументов командной строки, поддерживаемых этим инструментом, введите ФОРФИЛИ /? в командной строке.

Чтобы найти и удалить файлы старше определенного количества дней с помощью 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'

удалить файлы старше x дней в windows forfiles.exe команда forfiles

Вышеуказанное предполагает, что путь к папке D: Мои сценарии и вы хотите удалить файлы старше 30 дней. Настройте путь к папке и количество дней в соответствии с вашими потребностями.

Если команда выполнена успешно, вы не увидите выходного сообщения. Если ни один файл не соответствует указанным критериям, вы увидите сообщение ОШИБКА: файлы с указанными критериями поиска не найдены .

Дополнительный совет: Чтобы выполнить пробный прогон перед попыткой удаления файлов, чтобы проверить, какие файлы затронуты по указанным критериям, замените команду из с участием выбросил , как показано ниже:

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'

forfiles удалить старые файлы x дней echo

При желании вы можете создать командный файл с помощью указанной выше команды. Или автоматически запускать команду через определенные промежутки времени с помощью планировщика заданий.

Запускать команду автоматически с помощью планировщика заданий

  1. Запустите планировщик заданий.
  2. В планировщике задач нажмите «Библиотека планировщика задач».
  3. Щелкните ссылку «Создать задачу» на правой панели.
  4. В диалоговом окне «Создать задачу» выберите вкладку «Общие».
  5. Назовите название задачи, скажите «Удалить старые файлы в Моих документах».
  6. Перейдите на вкладку «Триггеры» и нажмите «Создать».
  7. Выберите «По расписанию» в раскрывающемся списке под полем раскрывающегося списка «Начать задачу».
  8. Вы можете запускать задачу ежедневно, еженедельно или ежемесячно. Если вы выбрали еженедельно, выберите дни недели, когда вы хотите, чтобы задача запускалась.
  9. После этого нажмите кнопку ОК.
  10. Щелкните вкладку «Действия» и нажмите кнопку «Создать…».
  11. В окне «Новое действие» заполните следующее:
    Действие: Запустите программу. Программа / сценарий: C:  Windows  System32  ForFiles.exe. Добавьте аргументы (необязательно): / p '% userprofile%  Documents' / s / d -30 / c 'cmd / c del @file'

    удалить файлы старше x дней в планировщике задач Windows

  12. Щелкните ОК.

Создается новая задача, которая при запуске удаляет файлы в вашем Документы папка, которая не изменялась за последние 30 дней.


Метод 3: удалить файлы старше N дней с помощью скрипта

Пользователи форума Spiceworks имеют сценарии VBScripts, которые могут рекурсивно удалять файлы старше N дней по указанному пути к папке. Вот простой сценарий:

При возникновении ошибки возобновить следующий набор oFileSys = WScript.CreateObject ('Scripting.FileSystemObject') sRoot = 'C:  Path To Old Files' 'Корневой путь для поиска файлов сегодня = Дата nMaxFileAge = 3' Файлы старше этого (в днях) будут удалены DeleteFiles (sRoot) Функция DeleteFiles (ByVal sFolder) Установить oFolder = oFileSys.GetFolder (sFolder) Установить aFiles = oFolder.Files Установить aSubFolders = oFolder.SubFolders Для каждого файла в aFiles dFileCreated = FormatDateCreated (FileDateCreated = FileDateTime ) Если DateDiff ('d', dFileCreated, today)> nMaxFileAge Then file.Delete (True) End If Next For Каждая папка в 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 [путь к папке] -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

(Запись: Имя папки в примере - это имя вашего профиля пользователя. Документы папка. Измените имя папки и путь соответственно в соответствии с вашими потребностями.)

Поскольку мы использовали -Файл параметр, работает только для файлов. Таким образом, подпапки, которые не были записаны в течение последних n дней, не могут быть удалены.

Приведенная выше команда состоит из трех частей:

  1. В Get-ChildItem командлет получает список файлов в папке документов.
  2. Затем вывод передается на Где-объект командлет, чтобы выполнить фильтрацию, выбирая только файлы, которые не были изменены в последний Икс количество дней (в этом примере 30 дней ).
  3. Наконец, мы направляем вывод в Убрать предмет командлет, который, в свою очередь, удаляет старые файлы, возвращенные двумя предыдущими командлетами.

Совет 1. Перечислите совпадающие файлы, не удаляйте их?

Чтобы перечислить совпадающие файлы и папки, не удаляя их, отпустите | Убрать предмет переключатель.

Get-ChildItem -Path [путь к папке] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))}

Совет 2: подавляйте ошибки при удалении элементов

Чтобы сообщения об ошибках (при доступе или удалении элементов) не отображались в консоли, добавьте -ErrorAction SilentlyContinue параметр.

Get-ChildItem -Path [путь к папке] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -ErrorAction SilentlyContinue -Force

Удалите старые файлы, а также папки

Обратите внимание, что приведенные выше команды удаляют только старые файлы, но не подпапки, которые не были записаны в последний раз. Икс дней. Чтобы удалить старые папки, отпустите -Файл аргумент из ранее объясненных команд.

Пример:

Get-ChildItem -Path '$ env: userprofile  documents' -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -Force

(См .: Документация по командлету Get-ChildItem на сайте Microsoft)

Важный: В -Рекурс Параметр указывает PowerShell на рекурсивное получение файлов (в подкаталогах). Чтобы предотвратить поиск файлов во вложенных папках, удалите -Рекурс вариант, чтобы обрабатывать только текущую папку.


Одна небольшая просьба: если вам понравился этот пост, поделитесь им?

Одна «крошечная» публикация от вас серьезно помогла бы росту этого блога. Несколько отличных предложений:
  • Приколи это!
  • Поделитесь этим в своем любимом блоге + Facebook, Reddit
  • Твитнуть!
Так что большое спасибо за вашу поддержку, мой читатель. Это займет не более 10 секунд вашего времени. Кнопки «Поделиться» находятся прямо внизу. :)