Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование только самых новых файлов в папках с сохранением структуры папок (http://forum.oszone.net/showthread.php?t=224061)

hoh 29-12-2011 16:15 1824981

Копирование только самых новых файлов в папках с сохранением структуры папок
 
Искал-искал, но своего варианта так и не нашел.
Имеется: структура папок Archive\base1, Archive\base2, и т.д. В каждой подпапке лежат бекапы.
Требуется: копировать в папку Archive2 все подпапки из Archive, в каждой из подпапок должен лежать только самый последний (по дате) файл.
Вариант с xcopy /d:m-d-y не предлагать, т.к. некоторые бекапы делаются не ежедневно, и оно их естественно не цепляет.

megaloman 29-12-2011 20:19 1825125

Код:

@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 29-12-2011 23:05 1825251

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

hoh 03-01-2012 10:22 1827342

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

@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
)


Время: 18:32.

Время: 18:32.
© OSzone.net 2001-