Привет всем.Прошу помощи так как новичок в этом деле, мне нужно написать батник который будет копировать файлы из папки BASE, в папку с датой к примеру (BASECOPY\01.01.10) + к этому хотелось бы сразу из этой же папки (BASECOPY) удалялись папки с датами на 2 дня назад, тоесть если дата будет 22.01.10, чтобы этотже батник перед копированием базы удалял даты до 20.01.10.
Очень прошу помощи в этом вопросе и если можно каких то обьяснений.Заранее спасибо!!!
CMD/BAT - Копирование файлов
-
amel27
Re: CMD/BAT - Копирование файлов
для стандартного формата даты: "ДД.ММ.ГГГГ":
Код:
FYI:
Код:
Код: Выделить всё
@echo off
SetLocal EnableDelayedExpansion
set SRC=BASE
set DST=BASECOPY
call :FromNow -2
xcopy /q/y "%SRC%\*" "%DST%\%DATE:~,5%.%DATE:~-2%\"
for /d %%i in (%DST%\*) do (
set $i=%%~ni& set "$i=!$i:~-2!!$i:~3,2!!$i:~,2!"
if !$i! lss %yymmdd% rd /s/q "%%i"
)
EXIT
:FromNow
SetLocal
Set yyyy=%DATE:~-4%& set /a mm=100%DATE:~3,2%%%100& set /a dd=100%DATE:~,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 yymmdd=%yyyy:~-2%%mm:~-2%%dd:~-2%
Exit /BFYI:
CMD/BAT - [решено] Удаление старых архивов
(пост CMD/BAT - [решено] Удаление старых архивов
)-
LightZone
Re: CMD/BAT - Копирование файлов
Огромнейшее спасибо за ответ, если не трудно можете обьяснить что за что отвечает?
Ещё заметил что при копировании он копирует только файлы, но не копирует папки, можно это как-то исправить?Или указать ему чтобы он именно какую-то папку копировал, к примеру BASE/AA/?
Ещё заметил что при копировании он копирует только файлы, но не копирует папки, можно это как-то исправить?Или указать ему чтобы он именно какую-то папку копировал, к примеру BASE/AA/?
-
amel27
Re: CMD/BAT - Копирование файлов
Цитата LightZone:
можете обьяснить что за что отвечает?
SRC - папка с данными;
DST - папка с копиями;
FromNow - расчет даты, отстоящей от текущей на заданное кол-во дней (переменная yymmdd);
XCOPY - собственно команда копирования;
FOR /D ... - цикл перебора архивных папок и сравнение с переменной yymmdd
Цитата LightZone:
при копировании он копирует только файлы
как было заказано
Цитата LightZone:
можно это как-то исправить?
добавить в XCOPY ключ /s
можете обьяснить что за что отвечает?
CMD/BAT - Копирование файлов
SRC - папка с данными;
DST - папка с копиями;
FromNow - расчет даты, отстоящей от текущей на заданное кол-во дней (переменная yymmdd);
XCOPY - собственно команда копирования;
FOR /D ... - цикл перебора архивных папок и сравнение с переменной yymmdd
Цитата LightZone:
при копировании он копирует только файлы
CMD/BAT - Копирование файлов
как было заказано
Цитата LightZone:
можно это как-то исправить?
CMD/BAT - Копирование файлов
добавить в XCOPY ключ /s
-
LightZone
Re: CMD/BAT - Копирование файлов
Понял спасибо, а вот если я хочу чтобы из папки к примеру BASE(10 файлов 10 папок в ней), чтобы именно копировалась папка BASE/AA к примеру, и больше нечего из подкаталога BASE?
Извиняюсь кажеться понял, set SRC=BASE/AA нужно наверно сделать так.
Извиняюсь кажеться понял, set SRC=BASE/AA нужно наверно сделать так.