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

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

Ветеран


Contributor


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

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


finderhd, Для xcopy
Цитата:
/D:m-d-y Копирование файлов, измененных не ранее указанной даты.
Если дата не указана, заменяются только конечные файлы,
более старые, чем исходные.
Нелёгкая задача в CMD посчитать дату, вот вариант (тупо использую отлаженную процедуру):
Код: Выделить весь код
@Echo Off
cls
	Set "BoxIn=\\192.168.100.23\Test1\тра ля ля\CMD_Forum" 
	Set "BoxOut=Z:\Box_Arc\тра ля ля\CMD_Forum"

	Set /A DeltaDay=-31
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "ToDay=%%d" &Call Set "ToDay=%%ToDay:~6,2%%.%%ToDay:~4,2%%.%%ToDay:~0,4%%"
	Call :FromDate %DeltaDay% %ToDay% "DDat"

	If Not Exist "%BoxIn%\" (
		Echo --- InBox not found "%BoxIn%\"   --- OutBox= "%BoxOut%"
	) Else ( 
		Xcopy /D:%DDat:~4,2%-%DDat:~6,2%-%DDat:~0,4% /Q /S /H /R /C /Y "%BoxIn%\*.*" "%BoxOut%\"
	)
pause
Exit /B

:FromDate

rem Пересчет даты на заданное кол-во дней
rem В первом аргументе +- дни
rem Во втором аргументе дата в формате dd.mm.yyyy
rem В третем аргументе имя переменной в кавычках где получим новую дату в формате yyyymmdd 

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyymmdd"
rem результат в перемменной %yyyymmdd%

 SetLocal
 Set "DT=%~2"
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal& Set "%~3=%yyyy%%mm:~-2%%dd:~-2%"
GoTo :Eof
Set /A DeltaDay=-31
Здесь указываем число дней для пересчета текущей даты ("-" назад).
Наверное можно то же сделать посредством forfiles.

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


Последний раз редактировалось megaloman, 26-11-2020 в 16:33.


Отправлено: 15:26, 26-11-2020 | #20