Искал-искал, но своего варианта так и не нашел.
Имеется: структура папок Archive\base1, Archive\base2, и т.д. В каждой подпапке лежат бекапы.
Требуется: копировать в папку Archive2 все подпапки из Archive, в каждой из подпапок должен лежать только самый последний (по дате) файл.
Вариант с xcopy /d:m-d-y не предлагать, т.к. некоторые бекапы делаются не ежедневно, и оно их естественно не цепляет.
CMD/BAT - Копирование только самых новых файлов в папках с сохранением структуры папок
-
megaloman
Re: CMD/BAT - Копирование только самых новых файлов в папках с сохранением структуры папок
Код:
Код: Выделить всё
@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
Re: CMD/BAT - Копирование только самых новых файлов в папках с сохранением структуры папок
Вот, что сделал в итоге для себя я.
Цитата:
@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
)
Цитата:
@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
)