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

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

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

Сообщение hoh »

Искал-искал, но своего варианта так и не нашел.

Имеется: структура папок Archive\base1, Archive\base2, и т.д. В каждой подпапке лежат бекапы.

Требуется: копировать в папку Archive2 все подпапки из Archive, в каждой из подпапок должен лежать только самый последний (по дате) файл.

Вариант с xcopy /d:m-d-y не предлагать, т.к. некоторые бекапы делаются не ежедневно, и оно их естественно не цепляет.
Аватара пользователя
megaloman

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

Сообщение megaloman »

Код:

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

@Echo Off
Set FDir=D:\Delete1
Set SDir=D:\Delete2
FOR /F "usebackq delims=" %%d IN (`Dir %FDir% /b /A:D`) DO Call :Select "%%d"
GoTo :Eof
:Select
FOR /F "usebackq delims=" %%f IN (`Dir "%FDir%\%~1" /O:-D /b /A:-D`) DO (
   Md "%SDir%\%~1" >nul 1>nul 2>nul
   Copy "%FDir%\%~1\%%f" "%SDir%\%~1\" >nul 	   
   GoTo :Eof
)
Аватара пользователя
hoh

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

Сообщение hoh »

Спасибо огромное! Завтра подробнее проверю и отпишу, что именно получилось у меня.
Аватара пользователя
hoh

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

Сообщение hoh »

Вот, что сделал в итоге для себя я.


Цитата:



@echo off



set month=%DATE:~3,2%

set year=%DATE:~6,4%



Set FDir=F:\Archive\_Eth_Backup

Set SDir=F:\Archive\%year%\%month%\_Eth_Backup



FOR /F "usebackq delims=" %%d IN (`Dir %FDir% /b /A:D`) DO Call :Select "%%d"

GoTo :Eof



:Select

FOR /F "usebackq delims=" %%f IN (`Dir "%FDir%\%~1" /O:-D /b /A:-D`) DO (

Md "%SDir%\%~1" >nul 1>nul 2>nul

Copy "%FDir%\%~1\%%f" "%SDir%\%~1\" >nul

GoTo :Eof

)
Ответить

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