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

Четверг, 1 ноября 2012 г.
Рубрика: В помощь сисадмину
Просмотров: 90401
Подписаться на комментарии по RSS

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

на базе утилит 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

далее ...

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru pikabu.ru blogger.com liveinternet.ru google.com

Комментариев: 9

  1. Если файл исходный 2 кб а скопированный 1 кб то файл будет копироваться?

    (Извините, я не разбираюсь в параметрах приведенных вами и хотел бы ответ от вас услышать, спасибо)

  2. Нет, файл не будет копироваться, в данном случаи идет проверка по имени файла, а не по его размерам или дате создания

  3. А реализовать это сложно? Проверку размера и времени создания.

    Я бы вас попросил очень интересно применение получается если проверка еще будет к тому же перезапись. Спасибо.

  4. Не чего обещать не буду, смогу посмотреть только в Понедельник

  5. Здравствуйте у меня такая проблема:Мне нужен скрипт для проверки последнего созданного файла в папке и если время его создания превышает 15 минут то выдать сообщение об этом....Сложно ли это реализовать?!Заранее спасибо!

  6. Добрый, думаю что не сложно, вот например получения даты создания самого нового файла в папке

    for /f "tokens=*" %%i in (' dir /b /od /a-d /tc ') do set "new_file=%%i"
  7. Если еще актуально?

    а с папками как быть

    надо и файлы и папки

  8. Олег, надо его немного переделать и все будет ок. Почитай ман к robocopy — утилита командной строки для репликации (не просто копирования) каталогов (папок)

  9. Аноним | 2015-12-28 в 13:17:21

    Добрый день, извините но это колесо приделанное к данной утилите robocopy, там есть много ключей которые без проблем решат нужные задачи, например:

    /MON:1 :: Наблюдать за источником; перезапустить после n изменений. - скрипт будет работать пока его не закроете!!!

    /MIR :: Создать зеркало (MIRror)

    /Z :: использовать журнал возобновления, на случай потери сетевого соединения

    их там много на все случаи жизни.

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)