Автоматическое удаление файлов старше заданных минут в Windows

У меня есть папка на моем ПК, в которой хранятся временные файлы, которые мне не понадобятся через некоторое время. Я вручную удаляю их время от времени. Какой способ автоматизировать это? Я могу подумать об удалении файлов, время последнего доступа которых превышает 20 минут с использованием Java, но опять же, мне пришлось бы запускать его самостоятельно, и это все равно не было бы автоматизацией. Я использую Windows и файловую систему NTFS.

  • Определить и изменить кодировку имени файла в Windows
  • DVD RW: Они все еще актуальны для резервного копирования?
  • Карточка Reformat SD для NTFS
  • Файловая система, используемая для внешнего жесткого диска для использования с компьютерами Mac, Linux и Windows
  • Что означает «установка корневой файловой системы»?
  • Рекомендуемые настройки для форматирования USB-палочек
  • Сеть Wi-Fi не обнаруживается на Lenovo G470
  • Как установить / обновить до Windows Vista RTM без учетной записи Microsoft
  • Windows 10 на asus x44h не работает
  • Не удается открыть папку в Windows 7 двойным щелчком
  • Как я могу заставить Windows 10 искать мои настройки / элементы панели управления?
  • Изменение значения столбца «Рейтинг» в проводнике для произвольных типов файлов
  • One Solution collect form web for “Автоматическое удаление файлов старше заданных минут в Windows”

    Если вы просто хотите удалять файлы по истечении заданного количества минут без передовой логики, сборка GNUWin32 команды «найти» Linux является простым вариантом.

    Настроить

    • Загрузите текущую бинарную (findutils-4.2.20-2-bin) и зависимую (findutils-4.2.20-2-dep) .zip-файлы на свой ПК и извлеките их как обычно.
    • Скопируйте элементы из папки «bin» в Dependencies в папку «bin» в Binaries. Вы также можете скопировать элементы папки «manifest», но это не требуется строго.
    • В папке «bin» Binaries переименуйте find.exe в другое (например, gnu_find.exe). Это предотвращает путаницу со встроенной командой «find» Windows.
    • Не стесняйтесь переименовывать / размещать папку Binaries, как вам угодно.

    использование

    Удалите все файлы старше X минут (например, 5 минут) в заданном каталоге (например, TempFiles)

    gnu_find.exe "C:\Path\To\TempFiles" ! -mmin -5 -type f -delete 

    Обратите внимание, что! (Отрицание). Если вы оставите это, будут удалены файлы в возрасте менее чем за X минут.

    Опции

    • -name может использоваться для фильтрации элементов. -name всегда должно появляться перед -delete или оно не будет иметь никакого эффекта, например

        gnu_find.exe "C:\Path\To\TempFiles" ! -mmin -5 -type f -name "*text*" -delete 

      В приведенном выше примере -name соответствует любому файлу с последовательностью «текст» в любом месте имени файла (включая расширения). Используйте звездочку (*) для любой части, где вы хотите сопоставить подстановочные знаки. Звездочки могут появляться более одного раза. Если вы соответствуете точному имени, вы должны включить расширение в Windows.

    • -exec ex_command {} + позволяет использовать внешнюю команду, например, «ex_command», когда найдены подходящие элементы. Это может быть полезно для запуска отдельного процесса (например, пакетного файла или аналогичного), когда «найти» соответствует элементам успешно. Этот параметр следует поместить в конце опций «Найти», т.е.

        gnu_find.exe "C:\Path\To\TempFiles" ! -mmin -5 -type f -delete -exec ex_command {} + 
    • -delete является необязательным (как и все варианты). Вы можете оставить его, если хотите просмотреть, на что «найти» будет работать (например, для тестирования или устранения неполадок) или просто хотите распечатать файлы.

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

        C:\Path\To\TempFiles/filename.txt 

      Поэтому вам может потребоваться предпринять соответствующие шаги, чтобы исправить это позже.

    Другие варианты

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

    Возможности варьируются в зависимости от языка, но, например, у Python есть time.time () (текущее время через модуль времени ), а также os.path.getctime () и os.path.getmtime () (время создания Windows и модификация файла Соответственно через модуль os ). Все они возвращают плавающие точки в секундах от времени эпохи и делают сравнение времени чрезвычайно простым.

    Как вы упомянули Java, вы можете проверить этот вопрос StackOverflow на Java NIO для аналогичных функций.

    автоматизация

    Как упоминалось в комментариях, планировщик задач Windows может использоваться для периодического запуска элементов, включая один раз за X минут. Вы можете использовать его для запуска однострочного командного файла с помощью команды GNUWin32 «find» выше.

    В настройках триггера для планировщика заданий Windows 7 вы можете установить приращения с точностью до 1 минуты. Вы должны ввести пользовательские приращения, например, 1 минуту вручную в раскрывающемся поле «Повторить задачу каждый:», иначе будет использоваться элемент из списка инкремента по умолчанию.

    Настройки планировщика заданий Windows 7

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

    Чтобы помочь избежать этого, вы должны включить «Настройки → Запустить задачу как можно скорее после пропущенного запланированного запуска».

    Другие параметры автоматизации

    В качестве предложения может оказаться предпочтительным инструмент, подобный утилите UNIX «cron». Есть несколько лучших и худших эмуляций , но лично я предпочитаю IntelliAdmin Cron Service v2.0 .

    К сожалению, ссылка на сайт кажется сломанной на момент написания этой статьи (она больше не похожа на ссылки для ссылок на бесплатные утилиты). Однако, если вы доверяете незнакомцам в Интернете, вы можете скачать его здесь .

    IntelliAdmin Cron устанавливает простой сервис, который запускает перечисленные задачи через определенные промежутки времени, пока работает служба. Он будет принимать файлы crontab для планирования, но также имеет интерфейс GUI.

    Следует отметить, что поля интерфейса GUI по-прежнему ожидают записи стиля crontab для указания времени выполнения. Вы можете исследовать это дальше, но формат для запуска каждые X минут

     */X 

    Со всеми другими значениями, установленными на «*». Поэтому, если мы хотим каждую минуту запускать команду, это будет выглядеть так в интерфейсе:

    Интерфейс службы IntelliAdmin Cron

    Давайте будем гением компьютера.