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

Четверг, 1 ноября 2012 г.
Рубрика: В помощь сисадмину
Просмотров: 89871
Подписаться на комментарии по 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 :: использовать журнал возобновления, на случай потери сетевого соединения

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

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

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

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

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

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

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