Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


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

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


Если:
- лохматые времена - это 2000 год и позже
- дата в системе отображается как дд.мм.гг или дд.мм.гггг
- и я правильно понимаю, что надо удалить файлы с 04.05.21<=дата изменения<=30.05.21
то:
Вот CMD
Код: Выделить весь код
@Echo Off
	Set "BoxIn=Z:\Box_Arc" 
	Set "Date1=04.05.21"
	Set "Date2=30.05.21"

	Set "D1=20%Date1:~-2%%Date1:~3,2%%Date1:~0,2%"
	Set "D2=20%Date2:~-2%%Date2:~3,2%%Date2:~0,2%"

	For /f "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D /O:D /S "%BoxIn%\*.*"`) Do (
		Set "DD=%%~tf"
		Call :MyDel "%%f" %D1% %D2% %%DD%%
	)
Exit /B

:MyDel
	Set "DD=%4"
	Set "DD=20%DD:~-2%%DD:~3,2%%DD:~0,2%"
	If %2 LEQ %DD% If %DD% LEQ %3 Del %1
Exit /B
Идея решения: даты прекрасно можно сравнивать, если дату сконвертировать в число вида ггггммдд, тогда в этом случае не нужно инвертировать даты в т.н. julian day
если надо удалить файлы вне диапазона с 04.05.21<=дата изменения<=30.05.21
Код: Выделить весь код
:MyDel
	Set "DD=%4"
	Set "DD=20%DD:~-2%%DD:~3,2%%DD:~0,2%"
	If %2 LEQ %DD% If %DD% LEQ %3 Exit /B
	Del %1
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


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

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

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