Облачное хранилище

Делаю бекапы каждый день, накапливается не один десяток гигабайт информации. Чистить нужно, тем более старые бекапчики особой важности не несут. Раньше удалял вручную, но потом задумался… Вручную делать это лень, тем более можешь завтыкать, протупить и удалить не то. Короче, ленивый сделает лучше всех — нужно автоматизировать.

Воспользовался встроенной утилитой forfiles. Теперь все делает планировщик задач и несложный bat-ник в две строки. Пример дальше.

Команды forfiles. Примеры
Вот так примерно выглядит команда для отображения всех файлов с расширением .rar на диске С старше 10-ти дней:
forfiles /p C:\ /m *.rar /s /d -10 /c «cmd /c echo @path»

Разберем ключи по порядку:

/p — пусть для проверки. В примере диск C:\
/m — маска для поиска. Можно не задавать, если хотим убрать все файлы в папке. В примере все архивы с расширением .rar
/s — сканируем вложенные папки в том числе.
/d — дата. Можно задать в формате dd.mm.yyyy или dd. У нас -10 дней, можно указать +N дней. Про +N дней читайте далее.
/c — команда. Ключевое что нам нужно — собственно что мы будем делать с файлами. В командах также можно использовать переменные:
@path — показывает полный путь к файлу и его имя.
@relpath — показывает путь к файлу только в сканируемой папке.
@file — имя файла полностью с расширением.
@fname — только имя файла, без расширения.
@ext — только расширение имени файла.
@isdir — проверка типа файла — папка или файл. Возвращает true, если папка, и false для файлов.
@fsize — возвращает размер файла в байтах.
@fdate — возвращает дату последнего изменения файла.
@ftime — возвращает время последнего изменения файла.

Также результаты исполнения скрипта можно записать в файл.

Пример использования forfiles — отобразить все файлы .zip на диске и записать их в файл
Следующий код отобразит все Ваши исполняемые файлы .exe:
forfiles /p C:\ /m *.exe /s /c «cmd /c echo @path»

Если нужно их записать в файл, то добавьте в конце знак БОЛЬШЕ и адрес куда сохранить файл (лучше всего прописать полный путь).
forfiles /p C:\ /m *.exe /s /c «cmd /c echo @path» > D:\all_exefiles.txt

Вставляем код в cmd:

Forfiles. Запись в файл выполненного скрипта
Результат — созданный файл на диске D:\ и его содержимое (можно много интересного найти):

Forfiles. Запись в файл выполненного скрипта. Результат
Пример forfiles с переменными путь, дата, размер
Давайте вызовем все наши файлы с диска D:\ с расширением .zip, а выведем их на экран с адресом, датой и размером файла. Используем скрипт:

forfiles /p D:\ /m *.zip /s /c «cmd /c echo @path изменен @fdate и размером @fsize байт »

Вот результат выполнения скрипта:

Команды forfiles. Используем переменные со своим текстом
Как удалить файлы старше 10 дней
Чаще всего forfiles используют как раз для задачи удаления устаревших файлов. Вот Вам cmd скрипт для удаления старых файлов (в примере старше 10 дней):
forfiles /p C:\ /m *.rar /s /d -10 /c «cmd /c del @path /q»

Как удалить папки старше 7 дней с помощью forfiles

Кроме самих файлов не лишним будет удалять и папки, тем более если они будут пустые (без файлов). Код:
forfiles /p C:\downloads /s /d -7 /c «cmd /c rmdir /s del @path /q»
В этом примере я написал уже 7 дней. Для удаления папок мы используем rmdir, ключ /s — для сканирования вложенных папок, del — команда удаления, /q — удаление без подтверждения.