Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как удалить файлы старше определенной даты


Удалить файлы старше N дней в Windows

Создаем обычный .bat файл, сделать это можно с помощью блокнота.

Вписываем туда команду

Forfiles -p "C:\папка с файлами" -s -m *.* -d -60 -c "cmd /c del /q @path"

Параметры

-p папка в которой мы будем удалять файлы

-s рекурсивное удаление (удаление во всех папках и под папках)

-m маска поиска файлов

-d (количество дней) выбор файлов, у которых дата изменения меньше или равна (-) текущей даты.

-с команда, которая выполняется для каждого файла

del - команда удаления

/q - отключения запросов на подтверждение при удалении

@path - возвращает полный путь до файла.

Сохраняем файл с расширением .bat

Удаление файлов по сети с помощью forfiles

Как удалять файлы старше 10 дней на windows

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

Воспользовался встроенной утилитой 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 — удаление без подтверждения.

CMD Скрипт удаление файлов старше n дней — Погодин Евгений

Удаление файлов через cmd утилитой forfiles.exe

Пример как с ее помощью можно удалять бекапы старше 20 дней:

forfiles.exe /p С:\Backup\ /s /m *.* /d -20 /c «cmd /c del /q /f @file»

обычный батник — и вуаля само делает неинтересную работу..

справка по FORFILES

FORFILES [/P <путь>] [/M <маска_поиска>] [/S]

[/C <команда>] [/D [+ | -] {dd.MM.yyyy | dd}]

Описание.

Выбор файла (или набора файлов) и выполнение команды

с этим файлом. Программа полезна для пакетных заданий.

Параметры:

/P <путь> Путь, с которого начинается поиск.

По умолчанию используется текущая

рабочая папка (.).

/M <маска_поиска> Поиск файлов с помощью маски.

Маска поиска по умолчанию «*» .

/S Рекурсивное выполнение программы forfiles

во всех подпапках, аналогично «DIR /S».

/C <команда> Команда, которая выполняется для каждого файла.

Строки команд необходимо заключать в прямые

кавычки.

Команда по умолчанию «cmd /c echo @file».

Следующие переменные могут использоваться

в строке команды:

@file — возвращает имя файла.

@fname — возвращает имя файла без

расширения.

@ext — возвращает только расширение имени

файла.

@path — возвращает полный путь к файлу.

@relpath — возвращает относительный путь к

файлу.

@isdir — возвращает значение «TRUE», если типом

файла является папка, и «FALSE» для файлов.

@fsize — возвращает размер файла

в байтах.

@fdate — возвращает дату последнего изменения

файла.

@ftime — возвращает время последнего изменения

файла.

Для включения специальных символов в строку команды

следует использовать шестнадцатеричный код символа

в формате 0xHH (например, 0x09 для табуляции).

Перед внутренними командами CMD.exe необходимо ставить

«cmd /c».

/D <дата> Выбор файлов, у которых дата последнего изменения

больше или равна (+) либо меньше или равна

(-) указанной дате при использовании формата

«dd.MM.yyyy»; либо файлов, у которых дата последнего

изменения больше или равна (+)

текущей дате плюс «dd» дней либо меньше или

равна (-) текущей дате минус «dd» дней.

Допустимым числом дней «dd» является любое

число в диапазоне 0 — 32768.

«+» используется по умолчанию, если знак не указан.

/? Вывод справки по использованию.

Примеры:

FORFILES /?

FORFILES

FORFILES /P C:\WINDOWS /S /M DNS*.*

FORFILES /S /M *.txt /C «cmd /c type @file | more»

FORFILES /P C:\ /S /M *.bat

FORFILES /D -30 /M *.exe

/C «cmd /c echo @path 0x09 был изменен 30 дней назад»

FORFILES /D 01.01.2001

/C «cmd /c echo @fname является новым с 1-янв-2001»

FORFILES /D +25.1.2011 /C «cmd /c echo @fname является новым сегодня»

FORFILES /M *.exe /D +1

FORFILES /S /M *.doc /C «cmd /c echo @fsize»

FORFILES /M *.txt /C «cmd /c if @isdir==FALSE notepad.exe @file»

Удаление файлов через Powershell старше даты

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


 $date = Get-Date -Year 2017 -Month 12 -Day 31 -Hour 23

Можно дату задать несколькими днями назад. Это удобно для скриптов, которые будут все время висеть в планировщике:


 $date = (Get-Date).AddDays(-15)

На моем примере дата получится в таком формате:

Т.к. я не установил минуты и секунды - они взялись по умолчанию из текущего дня. Если мы не установим год, например, то он будет текущим 2019.

 

Далее нам нужно использовать Get-Childitem для того что бы получить все файлы:


 $for_delete = Get-ChildItem -Path "C:\TestFolder\" -Include "*.txt" -Recurse

Где:

  • Path - путь до директории
  • Include - включает, в моем случае, все файлы которые кончаются на txt
  • Recurse - поиск файлов не только в текущей папке, но и в подпапках.

У файла есть несколько свойств c датами (datetime). Все их увидеть можно так:


 $for_delete | Get-Member | Where-Object -Property Definition -Like "*date*"

  • CreationTime
  • CreationTimeUtc
  • LastAccessTime
  • LastAccessTimeUtc
  • LastWriteTime
  • LastWriteTimeUtc

UTC значит, что дата будет в формате всемирного времени.

 

Меня интересует удаление файлов по дате создания. Для этого сделаем так:


 $for_delete | Where-Object -Property CreationTime -gT $date | Remove-Item

Т.е. для каждого файла где свойство CreationDate (дата создания файла) LessThen (больше чем) дата в переменной произвести удаление. Таким образом мы удалили в powershell файлы старше определенной даты. Мы можем использовать и другие операторы сравнения:

  • lt - меньше
  • le - меньше или равно
  • gt - больше
  • ge - больше или равно
  • ne - не равно

 

Готовый скрипт по удалению файлов:


 #Дата с которой сравнивать. В этом случае -15 дней от текущей даты
 $date = (Get-Date).AddDays(-15)
 #Или дата кастомная. Пустые значения будут взяты из текущего времени и даты
 $date = Get-Date -Year 2018 -Month 12 -Day 2 -Hour 12 -Minute 13
 #Путь до директории откуда удалять файлы
 $path = "C:\TestFolder\"
 #Удаление всех файлов и папок (в т.ч. внутри папок) старше чем значение в $date
 Get-ChildItem -Recurse -Path $path | Where-Object -Property CreationTime -gT $date | Remove-Item

 

...

Теги: #powershell

Powershell скрипт для удаления файлов старше указанного количества дней – CODE BLOG

 

Довольно часто возникает необходимость удаления старых файлов в определенной папке. Чаще всего это нужно для очистки логов или устаревших бэкапов. В данной статье мы рассмотрим PowerShell  скрипт для удаления файлов старше n дней.

Для начала нам необходимо запустить специальную утилиту Windows PowerShell ISE. В ней очень удобно писать и отлаживать скрипты. Далее, если ранее вы не использовали powershell, то необходимо предоставить разрешения на выполнения скриптов. Обратите внимание, что для того чтобы изменять политики системы Windows PowerShell ISE необходимо запускать от имени администратора.

Set-ExecutionPolicy RemoteSigned

Вводим команду и нажимаем ввод. Нам будет показано окно запроса подтверждения. Нажимаем «Да».

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

Теперь напишем сам скрипт. Выглядеть он будет следующим образом:

# Выполняем настройку скрипта. $TargetFolder = "C:\Program Files\Temp\Trace" # Путь к папке логов. $Period = "-7" # Количество хранимых дней. # Вычисляем дату после которой будем удалять файлы. $CurrentDay = Get-Date $ChDaysDel = $CurrentDay.AddDays($Period) # Удаление файлов, дата создания которых больше заданного количества дней GCI -Path $TargetFolder -Recurse | Where-Object {$_.CreationTime -LT $ChDaysDel} | RI -Recurse -Force # Удаление пустых папок GCI -Path $TargetFolder -Recurse | Where-Object {$_.PSIsContainer -and @(Get-ChildItem -Path $_.Fullname -Recurse | Where { -not $_.PSIsContainer }).Count -eq 0 } | RI -Recurse

Данный скрипт выполнит удаление всех файлов и вложенных папок в указанной директории.

Теперь нам остается только сохранить данный скрипт в файл и выполнять его вызов при необходимости или настроив автоматический запуск скрипта в планировщике задач Windows.

Похожее

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

Одной из особенностей последних версий Windows 10 является способность поддерживать себя в чистоте, автоматически удаляя ставшие ненужными по истечении определённого срока файлы. В более ранних версиях системы, в которых эта функция ещё не реализована, для удаления старых файлов можно использовать командную строку, консоль PowerShell и даже Проводник, хотя процедура очистки с помощью последнего не так удобна.

Рассмотрим все три варианта.

Удаление старых файлов с помощью Проводника

Лента Проводника Windows 10 и 8.1 содержит инструмент, который позволяет отсортировать все файлы в каталоге по дате изменения, типу, размеру и некоторым другим свойствам. Допустим, вы хотите удалить файлы старше одного месяца. Зайдите в папку с залежавшимися в ней файлам и нажмите на клавиатуре F3. При этом вы будете переключены в ленте Проводника в раздел поиска.

Кликните по иконке "Дата изменения" и выберите в выпадающем списке нужный период времени, в данном случае месяц.

Проводник тут же отсортирует все файлы по заданному параметру, так что вам останется только выделить их мышкой и отправить в Корзину. Способ простой, но не особо удобный, поскольку всё приходится делать руками. Есть куда более эффективный метод удаления старых файлов и сейчас как раз мы его рассмотрим.

Удаление старых файлов в командной строке

Для удаления файлов с "истёкшим сроком годности" мы будем использовать консольную утилиту ForFiles.exe, отвечающую за выбор объекта и выполнение с ним указанного действия. Утилита поддерживает несколько параметров, а именно:

/S — позволяет выполнять рекурсивный поиск.
/P — указывает путь к разделу или каталогу.
/D — указывает количество дней с момента последней модификации.
/C — задаёт команду действия над файлом.

В команде ForFiles также можно указывать возвращающие различные значения переменные, например, @file, которая возвращает имя файла и которую мы будем использовать. Удалим для примера все файлы старше 10 дней в папке "Картинки", лежащей в корне системного диска.

Открываем командную строку и выполняем такую команду:

ForFiles /p "C:\Картинки" /s /d -10 /c "cmd /c del @file"

В примере используются три ключа /p (путь), /s (рекурсия) и /d (количество дней), а также команда удаления del и переменная имени файла @file. Как только мы нажмём ввод, ForFiles пробежится по всему содержимому папки "Картинки", включая вложенные каталоги и удалит все файлы старше 10 дней.

Как видите, этот способ более эффективный и быстрый, кроме того, вы можете его автоматизировать, создав для него задания в Планировщике.

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

Удаление старых файлов с помощью PowerShell

Здесь практически всё то же самое, что и в примере с командной строкой, разве что синтаксис иной. Предположим, что ни путь к папке с файлами, ни цели у нас не изменились. Запускаем консоль PowerShell и выполняем команду такого вида:

Get-ChildItem "C:\Картинки" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-10))}| Remove-Item

Результат будет аналогичным предыдущему.

Обратите внимание, что в команде также используется рекурсия (-Recurse) и указание даты в днях AddDays(-10).

php - Как удалить файлы / папки старше определенного времени

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

командный файл для удаления файлов старше указанной даты

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии
.

bash - Как удалить файлы старше 30 дней на основе даты в имени файла

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с c
.

окон - Удалить все файлы старше 1 дня / 24 часов с использованием даты создания?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд
.Оболочка

- Как удалить файлы и каталоги старше n дней в linux

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технические таланты и стройте
.

Смотрите также