Bat удаление файлов по дате: Удалить файлы старше N дней в Windows
Содержание
DeleteOldFiles— Удаление старых файлов (GUI версия).
DeleteOldFiles (версия c Пользовательским Графическим Интерфейсом) — это программа работающая под ОС Windows, предназначенная для автоматического удаления старых файлов.
Описание программы:
Пользователь с помощью GUI интерфейса создает XML файл, в котором формирует необходимое количество конфигураций. Затем запускает процесс удаления файлов с помощью управляющего интерфейса либо выгружает команду в *.bat файл, который можно запускать как в ручном так и в автоматическом режиме через «планировщик заданий Windows».
Возможности программы:
- Поддержка всего семейства операционной системы Windows.
- Возможность сохранять множество конфигураций в одном XML файле.
- Запуск обработки файла конфигураций как из интерфейса программы так и из командной строки.
- Выполнение обработки как единичной конфигурации так и всех конфигураций XML файла.
- Поддержка трех режимов удаления файлов по дате создания, по дате изменения и по дате открытия.
- Фильтрация удаляемых файлов по маске.
- Поддержка логирования удаленных файлов.
- Использование корзины для удаления файлов.
- Использование предварительного просмотра удаляемых файлов.
- Исключение файлов по маске из списка удаляемых объектов.
- Исключение директорий из списка удаляемых объектов.
- Исключение файлов из списка удаляемых объектов, дата изменения которых меньше заданного интервала.
- Исключение файлов из списка удаляемых объектов, дата открытия которых меньше заданного интервала.
- Создание командных(.bat) файлов.
Интерфейс программы.
Программа DeleteOldFiles это набор двух исполняемых файлов:
- dof_gui.exe — Пользовательский графический интерфейс, для настройки конфигураций удаления файлов.
- dof.exe — консольное приложение для удаления файлов.
Изображение 1. Внешний вид главного окна программы DeleteOldfiles.
Изображение 2. Внешний вид окна «Удаление/Изменение конфигурации».
Изображение 3. Внешний вид окна «Настройка логирования».
Изображение 4. Внешний вид окна «Дополнительные параметры».
Рекомендации для работы с программой DeleteOldFiles.
1. Включить изменение даты открытия файлы.
2. Проблемы отображения кириллицы при запуске bat файла в командной строке.
Загрузка программы.
Для работы программы необходим Microsoft framework 3.5 скачать его можно здесь.
Скачать программу DeleteOldFiles v 4.0.3 — удаление старых файлов можно по ссылке:
DeleteOldFilesGUI.exe (1557 Загрузок)
— exe версия.
DeleteOldFilesGUI.zip (1313 Загрузок)
— портативная версия
Свои отзывы и предложения о программе DeleteOldFiles — Удаление старых файлов, просьба направлять на почтовый ящик admin@adminhelper. ru
Другие программы автора:
DiskSpaceControl — программа контроля дискового пространства.
DeleteOldFiles (консольная версия) — программа автоматического удаления старых файлов.
ChangeFileInfo — программа для изменения атрибутов файлов.
[Файловая система] Удаление файлов по маске, дате и количеству файлов
NinjaScript
Новичок
#1
День добрый.
Использую AutoIt v 3.4.1
Имеется на bat скрипт, суть такова:
Находит файлы по маске (определенного слова имени и с определенным расширением) и удаляет старые, оставляя n последних файлов. После чего переименовывает расширение оставшихся файлов.
Заданные значения (размещение папки, в которой происходит поиск файлов; имя и расширение файла, по которым идет поиск; количество файлов, которые нужно оставить; конечное расширение) задаются параметрами при вызове bat файла.
Полученный батник был переконвертирован сторонними программами в exe, и тут возникали проблемы:
- скрипт не работает после конвертации
- на скрипт жалуются антивирусы (как позднее оказалось некоторые конвертаторы и вправду дописывали свой код в exe-шник
Необходимо осуществить то же самое в Autoit (с последующей конвертацией в exe). Серфинг интернетов показал, что прямой конвертации из bat в autoIt не имеется. Возможен вызов cmd команд, но, насколько я понял, только одиночных, что в моем случае не помогает.
WSWR
AutoIT Гуру
#2
NinjaScript
Например, переделанный скрипт удаления старых папок:
#include <File. au3> #include <Array.au3> $sDir_Where_Search = 'C:\1' $aTemp = _FileListToArray($sDir_Where_Search, '*', 1) If @error Or (UBound($aTemp) - 1) < 50 Then Exit 13 Dim $aDir_and_Time[$aTemp[0] + 1][2] = [[$aTemp[0]]] For $i = 1 To $aDir_and_Time[0][0] $aDir_and_Time[$i][0] = $aTemp[$i] $aDir_and_Time[$i][1] = FileGetTime($sDir_Where_Search & '\' & $aTemp[$i], 1, 1) Next $aTemp = 0 _ArraySort($aDir_and_Time, 1, 1, 0, 1) ;_ArrayDisplay($aDir_and_Time) For $i = $aDir_and_Time[0][0] To 50 Step -1 ;ConsoleWrite($aDir_and_Time[$i][0] & ' ' & $aDir_and_Time[$i][1] & @CRLF) FileDelete($sDir_Where_Search & '\' & $aDir_and_Time[$i][0], 1) Next
Удаляет файлы, оставляя 50 новейших
Еще можно посмотреть эту библиотеку для создания списка файлов:
http://autoit-script.ru/index.php?topic=14598.0
madmasles
Модератор
#3
OffTopic:
NinjaScript[?]
Использую AutoIt v 3. 4.1
Нажмите, чтобы раскрыть…
Поделитесь, а то у меня нет такой.
alex33
Скриптер
#4
NinjaScript[?]
Возможен вызов cmd команд, но, насколько я понял, только одиночных
Нажмите, чтобы раскрыть…
Да почему… Я вон пробовал через && объединять команды, и ничего, работает
Например:
#include "Encoding.au3" ; http://autoit-script.ru/index.php/topic,510.0.html Global $pid, $sCommands, $str $sCommands = "echo hello && " & _ "echo. && echo world && " & _ "echo. && " & _ "echo ping yandex and google. .. && " & _ "ping yandex.ru && ping google.ru && " & _ "echo COMPLETE" $pid = Run(@ComSpec & " /c " & $sCommands, "", @SW_SHOW, 6) ProcessWaitClose($pid) $str = StdoutRead($pid) $str = _Encoding_866To1251($str) MsgBox(0, "результат", $str)
NinjaScript
Новичок
#5
WSWR, спасибо за ответ.
WSWR сказал(а):
NinjaScript
Например, переделанный скрипт удаления старых папокНажмите, чтобы раскрыть…
Я просматривал несколько подобных топиков.
В моем случае интересна реализация получения значений вводом параметров. Можно ли осуществить такое в autout? Чтобы я запускал скрипт (а в будущем exe), например, через командную строку, с параметрами. То есть в cmd.exe прописывал:
autoit.au3 d:\test\ full 7z 2 test
И у меня запускался скрипт autoit.au3, который считывал введенные параметры (которые обрабатываются в теле скрипта). То есть с параметрами введенными выше, скрипт бы осуществлял поиск в папке «d:\test\» файлов в имени которых есть слово «full» с расширением «7z», оставлял бы последние 2 файла, остальные удалял, а расширение этих двух файлов переименовывал в «test».
Выглядит, возможно, все это слишком замудренно, но мне и в правду нужен такой функционал
alex33
alex33 сказал(а):
NinjaScript[?]
Возможен вызов cmd команд, но, насколько я понял, только одиночных
Нажмите, чтобы раскрыть…
Да почему… Я вон пробовал через && объединять команды, и ничего, работает
Нажмите, чтобы раскрыть. ..
Спасибо! О такой возможности не знал. В теории это позволит «конвертировать» любой батник в autoit, если переписывать так каждую команду?
OffTopic:
madmasles
madmasles сказал(а):
OffTopic:
NinjaScript[?]Использую AutoIt v 3.4.1
Нажмите, чтобы раскрыть…
Поделитесь, а то у меня нет такой.
Нажмите, чтобы раскрыть…
У меня ВИП-аккаунт очепятался . v 3.3.12.0
alex33
Скриптер
#6
NinjaScript[?]
Можно ли осуществить такое в autout? Чтобы я запускал скрипт (а в будущем exe), например, через командную строку, с параметрами.
Нажмите, чтобы раскрыть…
Да, такое возможно. СМ. справку Параметры командной строки (CMD).
NinjaScript [?]
В теории это позволит «конвертировать» любой батник в autoit, если переписывать так каждую команду?
Нажмите, чтобы раскрыть…
Ну да.
NinjaScript
Новичок
#7
Собственно, закончил работу над скриптом.
Его суть: находит файлы по маске (определенного слова имени и с определенным расширением) и удаляет старые, оставляя n последних файлов. Переименовывает расширение оставшихся файлов.
Заданные значения (размещение папки, в которой происходит поиск файлов; имя и расширение файла, по которым идет поиск; количество файлов, которые нужно оставить; конечное расширение) задаются параметрами при вызове скрипта или скомпилированного exe. При этом, если параметры не заданы, использует значения, заданные по умолчанию. Если требуется задать один или несколько параметров, остальные параметры можно обозначить символом «@», в таком случае они останутся заданными по умолчанию.
В конечном, работающем виде он выглядит так:
#include <Array.au3> #include <File.au3> ;объявление задаваемых значений переменных по умолчанию $Dest='d:\temp\' ; Путь, где хранятся файлы $Name='*full*' ; Слово, содержащиеся в имени файлов $Number= 3 ; Количество файлов, которые останутся после удаления $Ext_first='7z' ; начальное расширение $Ext_final='kek' ; конечное расширение ;объявление незадаваемых переменных $Mask=$Name&'.'&$Ext_final ;Условие, определяющее, перейти сразу к функции сортировки-удаления-переименования (если параметры не заданы), или выполнить функцию ;присваивания переменным значений параметров If $CmdLine[0]=0 Then sort_del_ren() Else havepar() Endif ;Функция, выполняемая, если параметры для скрипта заданы. ;Если, параметр задан, присваивает переменной значение параметра, ;в противном случае пропускает переменную и проверяет следующую, по тому же принципу. ;После, запускает функцию сортировки-удаления-переименования Func havepar() If Not ($CmdLine[1]=='@') Then Global $Dest=$CmdLine[1] EndIf If Not ($CmdLine[2]=='@') Then Global $Name=$CmdLine[2] EndIf If Not ($CmdLine[3]=='@') Then Global $Number=$CmdLine[3] EndIf If Not ($CmdLine[4]=='@') Then Global $Ext_first=$CmdLine[4] EndIf If Not ($CmdLine[5]=='@') Then Global $Ext_final=$CmdLine[5] EndIf $Mask=$Name&'.'&$Ext_final ;необходимо переобъявление маски, если параметры заданы sort_del_ren() EndFunc ;Функция сортировки-удаления-переименования Func sort_del_ren() FileMove($Dest &'*.'& $Ext_first, $Dest &'*.'& $Ext_final) ;переимнование расширений файлов ;построение из списка файлов, найденных по маске, двухмерного массива со столбцами (имя, дата) Local $aFileColList = _FileListToArray($dest, $Mask, 1, True) ;(0 - файлы и папки, 1 - файлы, 2 - папки) if $aFileColList = 0 Then Return Else Local $aFileColList_2D[ $aFileColList[0]+1 ][2] = [[ $aFileColList[0] ]] For $i = 1 To $aFileColList[0] $aFileColList_2D[$i][0] = $aFileColList[$i] $aFileColList_2D[$i][1] = FileGetTime($aFileColList[$i], 0, 1) ;option 0 = (по умолчанию) время последней модификации )1 = время создания 2 = время последнего доступа ;в каком виде необходимо получить информацию 0 = (по умолчанию) вернуть массив, 1 = вернуть строку вида ГГГГММДДЧЧММСС Next ;сортировка и удаление лишних старых файлов $aFileColList = 0 _ArraySort($aFileColList_2D, 1, 1, 0, 1) ;сортировка массива (1 - по убыванию, 1 - Индекс массива, от которого начинать сортировку, 0 - Индекс массива, в котором закончить сортировку, 1 - Индекс колонки, по которой сортировать в двумерном массиве) $UB = UBound($aFileColList_2D) - 1 For $i = $Number + 1 To $UB FileRecycle($aFileColList_2D[$i][0]) Next EndIf EndFunc
Огромное спасибо всем откликнувшимся
Как удалить старые файлы по дате в Windows 11
Вы можете быстро удалить файлы старше 7, 30, 45, 60 дней и т. д., используя командную строку и PowerShell, и вот как в Windows 11.
Мауро Хук
@pureinfotech
- Чтобы удалить файлы старше 10 дней в Windows 11, используйте «ForFiles» 9инструмент 0017.
- Используйте эту команду: ForFiles /p «ПУТЬ К ПАПКЕ» /s /d -10 /c «cmd /c del /q @file» .
- В примере измените «10» на нужное количество дней и путь к папке.
В Windows 11 вы можете использовать командную строку и PowerShell для удаления файлов старше определенного количества дней, чтобы освободить место.
В приложении «Настройки» есть функция «Контроль памяти», которая автоматически запускается при нехватке памяти для освобождения места. Однако он ограничен и не дает возможности отслеживать дополнительные папки для удаления файлов, которые не изменились за последние 60 дней.
Если вы храните временные файлы из Интернета или проекты в разных папках, в Windows 11 вы можете использовать команду «ForFiles» в командной строке или сценарий PowerShell для удаления файлов из любой папки старше определенного количества дней.
В этом руководстве вы узнаете, как вручную удалить файлы, которые не изменялись в течение определенного количества дней в Windows 11.
- Удаление файлов старше X дней с помощью командной строки
- Удалить файлы старше X дней с помощью PowerShell
Важно: Рекомендуется протестировать эти команды с помощью тестовой папки, так как использование неверных параметров и других ошибок может привести к удалению неправильных файлов.
Удаление файлов старше X дней с помощью командной строки
Чтобы удалить файлы старше определенных дней в Windows 11, выполните следующие действия:
Открыть Запустить в Windows 11.
Найдите Командная строка , щелкните результат правой кнопкой мыши и выберите Запуск от имени администратора вариант.
Введите следующую команду для удаления файлов старше 30 дней в Windows 11 в командной строке и нажмите Введите :
ForFiles /p "C:\PATH\TO\FOLDER" /s /d -30 /c "cmd /c del /q @file"
В приведенной выше команде не забудьте изменить
"C:\PATH\TO\FOLDER"
указав путь к папке, в которой вы хотите удалить файлы и изменить/d -30
для выбора файлов с датой последнего изменения.
После выполнения этих шагов команда запустит удаление файлов, проверив указанную вами дату создания.
Разбивка команды ForFiles
- /p — указывает путь для начала поиска.
- /s — указывает ForFiles выполнять поиск внутри подкаталогов.
- /d — указывает дату последнего изменения файла.
- /c — указывает ForFiles выполнить команду, которая должна быть заключена в двойные кавычки. По умолчанию «команда /c del @file» .
- /q — позволяет удалять папки без подтверждения.
Если вы хотите узнать больше об этих переключателях, используйте ForFiles /?
Команда.
Удаление файлов старше X дней с помощью PowerShell
Чтобы использовать PowerShell для создания пакета для удаления файлов на основе даты создания в Windows 11, выполните следующие действия:
Открыть Запустить .
Искать PowerShell , щелкните результат правой кнопкой мыши и выберите параметр «Запуск от имени администратора ».
Введите следующую команду, чтобы удалить файлы старше 30 дней в Windows 11 в PowerShell, и нажмите . Введите :
.
Get-ChildItem –Путь "C:\PATH\TO\FOLDER" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Удалить элемент
Измените путь
"C:\PATH\TO\FOLDER"
с расположением папки, которую вы хотите удалить и изменить-30
для выбора файлов с датой последнего изменения в приведенной выше команде.
После выполнения этих шагов запустится сценарий PowerShell, который удалит файлы старше указанного вами числа дней. Не забудьте изменить имя или переместить папку в другое место. В противном случае команда не запустится.
Поскольку вы здесь…
У меня есть небольшая просьба. Это независимый сайт, и создание контента требует много тяжелой работы. Хотя больше людей читают Pureinfotech, многие используют блокировщик рекламы. Таким образом, доходы от рекламы быстро падают . И, в отличие от многих других сайтов, здесь нет платного доступа, блокирующего читателей. Итак, вы понимаете, почему нужна ваша помощь. Если каждый, кто находит этот сайт полезным и помогает поддерживать его, будущее будет намного более безопасным. Спасибо.
Если вы используете блокировщик рекламы, отключите его для этого сайта.
125 долларов на данный момент собрали 11 человек.
Пожертвовать
- Приложение Microsoft Defender теперь готово для Windows 11, Android, macOS, iOS
- Еженедельный дайджест: Windows 11 22h3, конец IE, технические советы
Мы так же, как и вы, ненавидим спам! Отписаться в любое время
Работает на Follow. it (Конфиденциальность), нашей конфиденциальности.
Как удалить файлы старше X дней в Windows 11/10
Если вы хотите автоматически удалять файлы старше X дней в Windows 11 и Windows 10, вот как вы можете это сделать. Можно удалить все файлы старше определенного количества дней с вашего компьютера с помощью Storage Sense и команды ForFiles. В этом посте мы покажем вам, как удалять файлы старше X дней (скажем, 7, 10, 30 и т. д. дней) с помощью Storage Sense или командной строки ForFiles в Windows 11/10.
Как уже говорилось, существует два основных способа удаления файлов старше X дней в Windows 11/10: с помощью Storage Sense и команды ForFiles. Оба метода имеют некоторые преимущества и недостатки. Например, вы можете запустить Storage Sense только в заданное время. С другой стороны, вы можете запускать команду ForFiles с любым интервалом.
Как удалить файлы старше X дней с помощью Storage Sense
Чтобы удалить файлы старше X дней автоматически в Windows 11/10 с помощью Storage Sense, выполните следующие действия:
- Нажмите Win+I , чтобы открыть настройки Windows.
- Перейдите к Система > Хранилище > Контроль памяти .
- Переключить кнопку Автоматическая очистка содержимого пользователя .
- Разверните меню Run Storage Sense и выберите параметр.
- Нажмите кнопку Запустить контроль памяти сейчас.
Чтобы узнать больше об этих шагах, продолжайте читать.
Сначала нажмите Win+I , чтобы открыть настройки Windows, и перейдите к пункту 9.0016 Система > Хранилище > Контроль памяти . Затем переключите кнопку Автоматическая очистка содержимого пользователя , чтобы включить ее.
Далее необходимо выбрать вариант из списка Run Storage Sense .
Рекомендуется выбрать время, соответствующее вашим потребностям. Для информации вы можете выбрать Каждый день , Каждую неделю и Каждый месяц .
После этого вы можете нажать Run Storage Sense now 9кнопка 0017.
Будут удалены все файлы старше выбранного времени.
Однако проблема с Storage Sense заключается в том, что вы не можете выбрать какую-либо конкретную папку. Предположим, вы хотите удалить файлы старше 30 дней только из одной папки или с одного диска. В некоторых ситуациях вы можете использовать команду ForFiles.
Как удалить файлы старше X дней с помощью командной строки
Чтобы удалить файлы старше X дней в Windows 11/10, выполните следующие действия:
- Найдите cmd в поле поиска на панели задач.
- Щелкните параметр Запуск от имени администратора .
- Нажмите кнопку Да.
- Введите следующую команду: ForFiles /p «путь к папке» /s /d -30 /c «cmd /c del /q @file»
Давайте подробно рассмотрим эти шаги.
Чтобы начать работу, вам нужно открыть командную строку с правами администратора. Для этого найдите cmd в поле поиска на панели задач, щелкните значок Запуск от имени администратора и нажмите кнопку Да .
Затем введите эту команду:
ForFiles /p "путь к папке" /s /d -30 /c "cmd /c del /q @file"
Не забудьте заменить путь к папке с исходным путем к папке и /d -30 с желаемым временем. Если вы хотите удалить файлы старше 100 дней, введите /d -100 .
Как только вы это сделаете, все файлы старше заданного числа дней будут удалены немедленно и безвозвратно.
К вашему сведению, вы можете запланировать команду ForFiles. Тем не менее, вы можете автоматически удалять файлы старше X дней в Windows 11/10 с помощью планировщика заданий. Однако при создании пакетного файла необходимо ввести следующую команду:
ForFiles /p "путь к папке" /s /d -30 /c "cmd /c del /q @file"
Чтение: Как удалить файлы и папки с помощью командной строки
Как автоматически удалить файлы старше x дней?
Чтобы автоматически удалить файлы старше X дней в Windows 11/10, вы можете следовать вышеупомянутым инструкциям.