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

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

Ветеран


Contributor


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

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


xan08,
Использовал известные приёмы для возни с датами, если основываться только на дате, то получается длинно
Код: Выделить весь код
@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
	Set "MaskIn=*_backup.20*.*"

        Set "BoxOut=D:\backup"

	FOR %%f IN ("%BoxIn%\%MaskIn%") DO Set "FF=%%~nxf" &Call :Out "%%f" "%%FF:*.=%%" "%BoxOut%"
Pause
GoTo :Eof

:Out
	Set "A=%~2"
	Set "A=%A:~8,2% %A:~5,2% %A:~0,4%"
	Call :NweekInYear %A% "NWeek"
	Set "NWeek=0%NWeek%"
	Set "NWeek=%NWeek:~-2%"
	Call :NdayInWeek %A% "DWeek"
rem	FOR /F "tokens=%DWeek% delims= " %%i IN ("Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье") DO Set "DWeek=%%i"
	FOR /F "tokens=%DWeek% delims= " %%i IN ("Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье") DO Set "DWeek=%DWeek%_%%i"
	If Not Exist "%~3\Неделя %NWeek%\D_%DWeek%" Md "%~3\Неделя %NWeek%\D_%DWeek%"
	>nul Move /Y %1 "%~3\Неделя %NWeek%\D_%DWeek%\"
Exit /B

rem Номер недели в году дд мм гггг имя_переменной
:NweekInYear
SetLocal
	Call :JdayGcal 01 01 %3 "N1"
	Call :NdayInWeek 01 01 %3 "W1"
	Call :JdayGcal %1 %2 %3 "N2"
	EndLocal &Set /A %~4=(%N2%-%N1%+6+%W1%)/7
Exit /B

rem Юлианский день по григорианскому календарю дд мм гггг имя_переменной
:JdayGcal
SetLocal
	Set "D=0%1" &Set "M=0%2"
	Set /A D=1%D:~-2%-100,M=1%M:~-2%-100
	Set /A A=(14-%M%)/12, Y=%3+4800-A, M=%M%+12*A-3
	EndLocal &Set /A %~4=(%D%+(153*%M%+2)/5+365*%Y%+%Y%/4-%Y%/100+%Y%/400-32045)
Exit /B

rem Номер дня в неделе дд мм гггг имя_переменной
:NdayInWeek
SetLocal
	Set "D=0%1" &Set "M=0%2"
	Set /A D=1%D:~-2%-100,M=1%M:~-2%-100  
	Set /A i=(%3-1901)*365 + (%3-1901)/4 + %D% + (!(%3 %% 4))*(!((%M%-3)^&16))
	EndLocal &Set /A %~4=(%i%+(%M%-1)*30+2*(!((%M%-7)^&16))-1+((65611044^>^>(2*%M%))^&3))%%7+1
Exit /B

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


Последний раз редактировалось megaloman, 04-07-2019 в 08:23.

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

Отправлено: 00:15, 04-07-2019 | #4