Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Удалить файлы из каталога и подкаталогов старше даты Х но младше даты У

Ответить
Настройки темы
Любой язык - [решено] Удалить файлы из каталога и подкаталогов старше даты Х но младше даты У

Пользователь


Сообщения: 105
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте!

Есть каталог "Dir".
В этом каталоге - подкаталоги "SubDir1, SubDir2, SubDir3...".
В подкаталогах файлы с датой создания начиная с лохматых времен, которые удалять пока нельзя, но и копировать - некуда.
В подкаталогах файлы создаются каждый день.
Как удалить файлы созданные позже 30.05.21, но раньше 04.05.21?

Помогите, пожалуйста.

Любой язык, WSH. CMD, Powershell

Спасибо!

Отправлено: 15:08, 07-06-2021

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
dir d:\dir -File -Recurse |? {$_.CreationTime -lt ("04.05.21" -as [datetime]) -or $_.CreationTime -gt ("30.05.21" -as [datetime])} |del

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 07-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


DJ Mogarych, можно сразу в метод:

Код: Выделить весь код
(Get-ChildItem d:\dir -File -Recurse |? {$_.CreationTime -lt ("04.05.21" -as [datetime]) -and $_.CreationTime -gt ("30.05.21" -as [datetime])}).Delete()
И вроде бы у ТС было указано "но", т.о. не -or а -and, но тогда какой-то бред получается "раньше чем позже, но позже чем раньше"

Последний раз редактировалось Elven, 07-06-2021 в 16:16.


Отправлено: 16:10, 07-06-2021 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


Никакого бреда. "And" в данном случае - это файл должен быть создан и после одной даты и до другой одновременно, т. е., такой выборке не будет ничего соответствовать.

Поэтому выбираем файлы до одной даты ИЛИ после другой.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:32, 07-06-2021 | #4


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


DJ Mogarych, не буду спорить. Тем более, что да - в такую выборку ни один файл не попадет. Но мне вот что-то кажется что ТС даты местами перепутал.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:40, 07-06-2021 | #5


Пользователь


Сообщения: 105
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Elven:
DJ Mogarych, не буду спорить. Тем более, что да - в такую выборку ни один файл не попадет. Но мне вот что-то кажется что ТС даты местами перепутал. »
а ведь точно, перепутал...
вместо 04.06.21 написал 04.05.21

Код: Выделить весь код
dir D:\backup_OS\ugo.FDB -File -Recurse |? {$_.CreationTime -lt ("26.04.21" -as [datetime]) -or $_.CreationTime -gt ("14.04.21" -as [datetime])} |del
DJ Mogarych, объясните пожалуйста, удалились все архивы и до 14.04.21 и после 26.04.21 и между 14.04-26.04 что я не так сделал? Скажите пожалуйста что означают -gt(это же - "раньше"?), -lt (это же - "later? позже?")

Отправлено: 18:41, 08-06-2021 | #6


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


-gt и -lt - это операторы сравнения, означающие "больше" и " меньше" соответственно. На языке математики это будет выглядеть как > и < соответственно.
В вашем случае проще инвертировать даты в т.н. julian day и определить диапазон значений (с теорией множеств вы же знакомы, верно?), что упростит работу с датами, во-первых, а во-вторых, исключит вероятность ложных удалений.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:50, 08-06-2021 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6626
Благодарности: 1528

Профиль | Отправить PM | Цитировать


-gt - greater than
-lt - less than

В данном случае вы указали удалить всё, что раньше 26 апреля и то, что позже 14 апреля. То есть, вообще всё.

Запускать скрипты, не вполне понимая, что они делают, это так себе идея.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:18, 08-06-2021 | #8


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата DJ Mogarych:
Запускать скрипты, не вполне понимая, что они делают, это так себе идея.
Наверное, следует создать тему, в которой нужно прописать CapsLock'ом для всех вопрошающих о необходимости использования параметра -WhatIf при тестах. Тему озаглавить "Золотые правила кодописателя".
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:03, 08-06-2021 | #9


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Уж сколько раз твердили миру,
Что без WhatIf'a жизнь вредна; но только всё не впрок,
И del в скрипте всегда отыщет уголок.
(с) не И.А. Крылов

Отправлено: 09:29, 09-06-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Удалить файлы из каталога и подкаталогов старше даты Х но младше даты У

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Перенести все файлы из каталогов/подкаталогов в субпапку, а пустые папки удалить Alexander_88 Скриптовые языки администрирования Windows 4 24-11-2015 20:07
VBS/WSH/JS - Удаление файлов старше даты, доработка techobsl Скриптовые языки администрирования Windows 0 14-09-2015 10:24
PowerShell - Удаление файлов старше определенной даты volk1234 Скриптовые языки администрирования Windows 15 23-11-2014 14:52
CMD/BAT - удалить файлы по маске из каталога Gablik Скриптовые языки администрирования Windows 15 04-09-2012 16:23
CMD/BAT - файлы вида mmdd*.* - для каждой даты нужно создать каталог, скопировать, файлы milito Скриптовые языки администрирования Windows 2 24-05-2009 23:32




 
Переход