CMD/BAT - Копирование файлов

Ответить
Аватара пользователя
LightZone

CMD/BAT - Копирование файлов

Сообщение LightZone »

Привет всем.Прошу помощи так как новичок в этом деле, мне нужно написать батник который будет копировать файлы из папки BASE, в папку с датой к примеру (BASECOPY\01.01.10) + к этому хотелось бы сразу из этой же папки (BASECOPY) удалялись папки с датами на 2 дня назад, тоесть если дата будет 22.01.10, чтобы этотже батник перед копированием базы удалял даты до 20.01.10.

Очень прошу помощи в этом вопросе и если можно каких то обьяснений.Заранее спасибо!!!
Аватара пользователя
amel27

Re: CMD/BAT - Копирование файлов

Сообщение amel27 »

для стандартного формата даты: "ДД.ММ.ГГГГ":





Код:

Код: Выделить всё

@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 /B

FYI:
CMD/BAT - [решено] Удаление старых архивов
(пост
CMD/BAT - [решено] Удаление старых архивов
)
Аватара пользователя
LightZone

Re: CMD/BAT - Копирование файлов

Сообщение LightZone »

Огромнейшее спасибо за ответ, если не трудно можете обьяснить что за что отвечает?



Ещё заметил что при копировании он копирует только файлы, но не копирует папки, можно это как-то исправить?Или указать ему чтобы он именно какую-то папку копировал, к примеру BASE/AA/?
Аватара пользователя
amel27

Re: CMD/BAT - Копирование файлов

Сообщение amel27 »

Цитата LightZone:



можете обьяснить что за что отвечает?
CMD/BAT - Копирование файлов




SRC - папка с данными;

DST - папка с копиями;

FromNow - расчет даты, отстоящей от текущей на заданное кол-во дней (переменная yymmdd);

XCOPY - собственно команда копирования;

FOR /D ... - цикл перебора архивных папок и сравнение с переменной yymmdd




Цитата LightZone:



при копировании он копирует только файлы
CMD/BAT - Копирование файлов




как было заказано




Цитата LightZone:



можно это как-то исправить?
CMD/BAT - Копирование файлов




добавить в XCOPY ключ /s
Аватара пользователя
LightZone

Re: CMD/BAT - Копирование файлов

Сообщение LightZone »

Понял спасибо, а вот если я хочу чтобы из папки к примеру BASE(10 файлов 10 папок в ней), чтобы именно копировалась папка BASE/AA к примеру, и больше нечего из подкаталога BASE?



Извиняюсь кажеться понял, set SRC=BASE/AA нужно наверно сделать так.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»