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

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

  • Удаление невидимых языковых режимов в Windows 8
  • Есть ли команда быстрого вызова в командной строке Windows, чтобы перейти в домашний каталог текущего пользователя, как в Linux?
  • Невозможно выполнить удаленный сценарий poweshell на сервере Windows Server 2016 без установки
  • Как найти мой IP-клиент VPN в окнах
  • Где я должен найти драйверы для своего ноутбука, если он не поставляется с диском драйвера?
  • Символьная ссылка Windows на исполняемый файл - не открывается двойным щелчком
  • Как изменить измененную дату файла в Windows Vista?
  • Использование диска Windows 10 на 100%, но в диспетчере задач не отображается соответствующий процесс
  • 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

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