Архивы

Скрипт для копирования файлов с проверкой и записью в лог-файл

на базе утилит robocopy.

robocopy (от англ. Robust File Copy) — утилита командной строки для репликации (не просто копирования) каталогов (папок). Она была доступна как часть Windows Resource Kit и представлена как стандартный компонент Windows Vista, Windows 7 и Windows Server 2008.

Что выполняет скрипт:

- копирует файлы из заданной папки;

- с введение лога, пишим имена скопированных файлов;

- и перед следующим копированием сверяем с записью в логах, если есть файл в логах - то его не копируем, если в логах отсутствует - копируем.

:: ( кодировка Dos 866 если имеется названия папок по русски )
@Echo off
:: ( путь откуда, без кавычек)
set $from=_ПУТЬ_ОТКУДА_
:: ( куда, без кавычек  )
set $dest=_КУДА_
::
set $log=_ПУТЬ_ЛОГ_ФАЙЛА\copyfile.log
for /f "delims=" %%i in ('dir "%$from%" /B/A:-D') do Call :CheckLog "%%i"
:CheckLog
If Exist "%$log%" For /f "delims=" %%a in (%$log%) Do If "%%a"=="%~1" Exit /B
robocopy "%$from%" "%$dest%" "%~1" /minage:0
if %errorlevel%==1 (echo.Copy is successful - %~1&echo.%~1>>"%$log%")

/MINAGE:n :: Минимальный возраст файла — исключить файлы, возраст которых менее n дней.

p.s в Windows XP ее нету, надо ставить пакет Windows Server 2003 Resource Kit Tools

p.s.s Утилита robocopy это отличнейшая вещь, очень гибкий инструмент копирования и бэкапа. Вот не больший пример для backup

далее ...