VBS-скрипты. Автоматизируй рутинную работу.

Хочу представить Вам новый переработанный и улучшенный скрипт: копирование файлов.
По просьбе читателей я добавил несколько новых функций в скрипт и переработал его структуру, что же нового:
перед копированием производится обязательная проверка доступности папок для копирования;
так же сначала проверяется существование подпапок и файлов, в результате чего принимается решение о копировании, либо дальнейшей обработке файлов;
самая важная и долгожданная функция :) Предварительно проверяется дата изменения файлов и копируются только новые!!!;
ведется подробный лог всех операций – Вы всегда сможете проверить результат. Кстати, в конце лога выводится небольшой отчет о работе скрипта.
– и др. мелкие доработки…
Текст скрипта приводить не буду (т.к. он довольно большой), Вы сможете скачать его по ссылке ниже, а для начала разберем несколько моментов в его работе:
Приведу часть кода, для наглядности – это шапка скрипта:

' ========== Script Information ==========
' script name: Fail_Copying
' version: 1.0
' date: 14.08.12
' autor: MasterLin
' site: http://www.masterlin.ru
' description: Скрипт копирует файлы, папки и подпапки с одного источника на несколько, в сети или локально (рассылка файлов).
' При этом происходит проверка на наличие, доступность и время создания файлов. При отсутствии, либо старой версии файла
' происходит его копирование и замена на более новый.

‘***********************************************
‘ Создание объектов оболочки и файловой системы
Set oShell = CreateObject(“wscript.shell”)
Set oFSO = CreateObject(“Scripting.Filesystemobject”)
Set WSNetwork = CreateObject(“WScript.Network”)
LogFolder = “c:\” ‘ место расположения лог-файла
StartFolder = “c:\1″ ‘ откуда копируем
aEndFolder = array(“c:\2\”,”c:\3\”) ‘ куда копируем

‘***********************************************

Постарался весь код снабдить подробными комментариями, что и для чего нужно – открывайте для редактирования файл и смотрите.
Сам скрипт имеет официальное название – Fail_Copying и поэтому все дальнейшее обсуждение темы, связанной с работой скрипта (копирование файлов) будет вестись на этой странице, ну и конечно авторство :)autor: MasterLin.
Скрипт бесплатный и распространяется бесплатно, но прошу указывать авторство и ссылку на этот блог, при размещение на сторонних ресурсах.

Теперь о задаваемых переменных, их Вы должны самостоятельно отредактировать в тексте скрипта, для правильной работы:

LogFolder – путь к лог-файлу, в этой папке будут создаваться логи выполнения скрипта. Формат имени лог-файла следующий:

LogTemp_дд_мм_гг_чч_мм_сс.log

Где, дд – текущий день;
мм – месяц;
гг – год;
чч – час;
мм – минута;
cc – секунда, соответственно;

StartFolde – источник файлов для копирования, может быть любая папка на Вашем ПК или в сети;

aEndFolder – массив в который Вы прописываете пути к папкам, в них будет происходить копирование, любые папки на Вашем ПК или сети;

Если лог окажется очень большим, то можете закомментировать в тексте все строчки содержащие функцию записи в файл – oLogFile.Writeline.

Обратите внимание на наличие слеша в конце адреса к папке приемнику файлов, его наличие обязательно!!!

Все претензии и благодарности :) по работе скрипта, ошибки – если Вы их найдете, а так же пожелания по улучшению функционала просьба оставлять в комментариях к этому посту.

Т.к. скрипт бесплатный, а автору очень хочется кушать и писать статьи на этот блог, то прошу поддержать проект любой суммой в денежном эквиваленте, а точнее 100 руб. или 3$, путем перечисления на счет webmoney – заранее очень благодарен!!! Буду благодарен любой сумме – меньше или больше указанной (больше конечно будет лучше :) ), можете вообще ничего не оплачивать – ведь скрипт бесплатный :)
Вот счета в рублях – R255220151372 и долларах – Z146345394555

Повторюсь, скрипт бесплатный и Вы можете скачать его бесплатно и использовать в работе.

==>> СКАЧАТЬ СКРИПТ <<==

 

По заявкам читателей выходит первый мод для скрипта: копирование файлов, т.е. первая модификация – Fail_Copying_Mod1 :)
Что бы не повторятся с описанием модификации, просто выложу шапку скрипта:

' ========== Script Information ==========
' script name: Fail_Copying_Mod1
' version: 1.0
' date: 17.08.12
' autor: MasterLin
' site: http://www.masterlin.ru
' description: Модификация скрипта Fail_Copying - скрипт копирует файлы с одного источника на несколько,
' в сети или локально (рассылка файлов). При этом происходит проверка файлов по расширению,
' по умолчанию копируются только файлы с расширением TXT, но это легко можно убрать, либо поставить
' другое расширение. Все файлы при копировании отсортировываются по дате изменения фалов и перемещаются
' в соответсвующие папки, т.е. файл первый.txt от 20.07.2011 падает в подпапку \2011\июль
' второй.txt от 03.05.2012 падает в подпапку \2012\май
' Происходит автоматическое создание соответствующих подпапок, а при совпадении имен файлов
' их копирование и замена на более новые.

‘***********************************************
‘ Создание объектов оболочки и файловой системы
Set oShell = CreateObject(“wscript.shell”)
Set oFSO = CreateObject(“Scripting.Filesystemobject”)
Set WSNetwork = CreateObject(“WScript.Network”)
LogFolder = “c:\” ‘ место расположения лог-файла
StartFolder = “c:\1″ ‘ откуда копируем
aEndFolder = array(“c:\2\”,”c:\3\”) ‘ куда копируем
sExt = “txt” ‘ расширение для копируемых файлов

‘***********************************************

Если не нужна проверка файлов по расширению, то просто закоментируйте в тексте скрипта условие проверки:

If LCase(oFSO.GetExtensionName(oFile)) = sExt Then

Повторюсь, скрипт бесплатный и Вы можете скачать его бесплатно и использовать в работе.

==>> СКАЧАТЬ Mod1 <<==

 

Встречаем еще один скриптСкрипт: архивация файлов. Данный скрипт архивирует заданную папку, сохраняя архив и лог в текущей папке, т.е. в папке со скриптом. Для корректной работы необходимо в папку со скриптом поместить файл 7z.exe, от всем известного архиватора :)
В итоге получим архив вида Name_ДД_ММ_ГГ.zip.
Шапка скрипта:

' ========== Script Information ==========
' script name: Fail_arhiv
' version: 1.0
' date: 22.08.12
' autor: MasterLin
' site: http://www.masterlin.ru
' description: Скрипт архивации папки.
' В скрипте необходимо указать папку для сжатия, локальную или сетевую
' Предварительно нужно скопировать в папку скрипта архиватор 7z
' В результате в папке со скриптом будет создан архив с именем Name_ДД_ММ_ГГ.zip и лог работы скрипта

‘***********************************************
‘ Создание объектов оболочки и файловой системы
Set oShell = CreateObject(“wscript.shell”)
Set oFSO = CreateObject(“Scripting.Filesystemobject”)
Set WSNetwork = CreateObject(“WScript.Network”)
StartFolder = “c:\1\” ‘ папка для архивации, будет обработано только содержимое этой папки!!!
‘***********************************************

Повторюсь, скрипт бесплатный и Вы можете скачать его бесплатно и использовать в работе.

==>> СКАЧАТЬ СКРИПТ: архивация <<==

 

Очередной скрипт – Перемещение файлов. Простое перемещение файлов из одной папки в другую.

Шапка скрипта:

' ========== Script Information ==========
' script name: Fail_Copying_Paste
' version: 1.0
' date: 21.02.13
' autor: MasterLin
' site: http://www.masterlin.ru
' description: Скрипт перемещает файлы, папки и подпапки с одного источника в другой, в сети или локально.
' При этом происходит проверка на наличие и доступность файлов. При отсутствии, либо совпадении файлов
' происходит его перемещение и замена на новый.

‘***********************************************
‘ Создание объектов оболочки и файловой системы
Set oShell = CreateObject(“wscript.shell”)
Set oFSO = CreateObject(“Scripting.Filesystemobject”)
Set WSNetwork = CreateObject(“WScript.Network”)
LogFolder = “c:\” ‘ место расположения лог-файла
StartFolder = “c:\1″ ‘ откуда перемещаем
EndFolder = “c:\2\” ‘ куда перемещаем
‘***********************************************

==>> СКАЧАТЬ СКРИПТ: перемещение <<==

Вы так же можете отблагодарить автора, перечислив немного денег на один из этих счетов:

R255220151372

Z146345394555


P.S. Не пропусти новые статьи – подпишись на обновление блога и получай свежие скрипты самым первым :)

18 Responses to“VBS-скрипты. Автоматизируй рутинную работу.”

  1. сергей
    19/10/2012 at 14:41 #

    вот ещёбы скрип умел почту отправлять
    успешно или с ошибкой (например не хватило места для копирования)

  2. Sergey
    09/01/2013 at 2:24 #

    День добрый. А можно ли добавить в скрипт copy_shares.vbs строчки удаления? (нужна полная синхронизация папок и файлов (если в StartFolder потёрлись какие-либо файлы, нужно чтоб в aEndFolder они тоже стирались))

    Заранее благодарен.
    P.S.
    шапка лог файла:
    ___________________________________________________________
    Папка ‘X:\Archive\Shares\’ доступна для работы

    Обрабатываем и копируем все подпапки из папки X:\Archive\Shares

    Проверяем подпапку G:\SHARES\Accounting
    Эта подпапка отсутствует в папке X:\Archive\Shares Давайка ее скопируем.
    ___________________________________________________________

    Обрабатываем и копируем все подпапки из папки X:\Archive\Shares – не понял сути этой строчки. Толи тут ошибка, поскольку копирование идёт из G:\SHARES, толи я чего-то не допонял:(

  3. вадим
    04/02/2013 at 9:35 #

    доброго времени)) хотел попросить а можно ли как-то подправить скрипт Fail_Copying_Mod1 так что бы он жестко копировал папки из одного диска на точно такие же папки второго диска (диски монтированные bat’ником), но при этом папки на первом диске это ИСТИНА, папки на втором диске, не зависимо от чисел изменения – это ЛОЖ. надо что бы скрипт копировал только те папки и файлы которые отличаются от ИСТИНЫ. + велся лог копирования+можно было бы перечислить какие виды файлов (расширения) надо копировать

  4. 04/02/2013 at 10:38 #

    вадим, что-то не понятно насчет истины и лжи :) т.е. копировать только те папки которых нет на диске, который ЛОЖ

  5. 06/02/2013 at 8:37 #

    Прошу прощенья, если кому-то не отвечаю по поводу скрипта. Во-первых – задолбали спамеры – форма обратной связи часто слетает из-за наплыва спамерских писем, поэтому Ваши письма иногда просто не доходят :(
    Во-вторых – на кардинальную доработку скрипта совершенно нет времени.
    Обязательно пишите если что-то нужно – обязательно постараюсь помочь!!!! В силу своих возможностей :)

  6. 06/02/2013 at 8:40 #

    Sergey, в этом случае механизм работы скрипта будет немного другим. Очень жаль что нет времени на такую доработку, было бы очень интересно реализовать такую функцию. В будущем обязательно будет отдельный скрипт!!!

  7. 01/03/2013 at 16:02 #

    было бы архи кашерно вкрутить в скрипт функцию копирования-обновления скольки-то файлов, грубо говря есть бекап, в который сыплются готовые архивы и оттуда же удаляются, скрипт рырит оттуда свежий самый (или 4 самых свежих) и утаскивает куда-то, где затирает предидущие)
    ПыСы а еще было бы круто вкрячить самба-аутентификацию:)
    -=антиспам=-

  8. Алексей
    20/03/2013 at 6:26 #

    Здравствуйте. пытаюсь догнать как модифицировать ваш скрипт под копирование файлов и папок с заменой на новые с ФТП. это вообще реально? с локалки я так понял нет проблем, а вот с ФТП… подскажете или поможете мне? очень актуально для работы.

  9. alex
    08/07/2014 at 15:13 #

    Можно в скрипт копирования файлов добавить в лог файлы которые по каким то причинам не смогли скопироваться и соответственно при копировании пропускать их после нескольких попыток (в моем случае скрипт спотыкается об кривые имена а так же максимальную длину в наименовании и пути).

  10. Александр
    05/12/2014 at 13:29 #

    Огромное спасибо за скрипт! На работе поставили задачу на копирование файлов. Использовал за основу ваш код. Сэкономил много времени.

  11. Александр
    15/12/2014 at 9:46 #

    Если в имени папки присутствует точка. Копия будет выполнятся всегда. Помогите понять почему

  12. Александр
    15/12/2014 at 11:45 #

    В условии

    If oFSO.FolderExists(oFSO.BuildPath(iEndCopyFolder, oFSO.GetBaseName(oSubFolder.Path))) Then
    и
    ‘ Выгружаем полный путь к проверяемой подпапке
    sSubFolderEnd = oFSO.BuildPath(iEndCopyFolder, oFSO.GetFileName(oSubFolder.Path))

    необходимо использовать GetFileName т.к если в имени будет использоваться точка скрипт сработает неверно

  13. 13/08/2015 at 14:52 #

    Как изменить скрипт чтобы название лог файла соответствовало названию пк в домене или имени пользователя

  14. Dmitry
    24/08/2016 at 13:12 #

    Добрый день, скрипт по перемещению отличный. Правда есть вопрос, как можно указать перемещение файлов и папок, которые старше определённого срока?

Pingbacks/Trackbacks

  1. MasterLin - 14/08/2012

    Скрипт: копирование файлов.: Хочу представить Вам новый переработанный и улучшенный скрипт: копирование файлов. … http://t.co/s3AS8PLF

  2. Скрипт: копирование папки. | Блог системного администратора - 16/08/2012

    [...] Вышла новая доработанная версия скрипта, поэтому все пожелания и вопросы просьба оставлять на этой странице – Скрипт: копирование файлов. [...]

  3. Скрипт: рассылка файлов. | Блог системного администратора - 16/08/2012

    [...] Вышла новая доработанная версия скрипта, поэтому все пожелания и вопросы просьба оставлять на этой странице – Скрипт: копирование файлов. [...]

  4. Скрипт: копирование файлов. | Блог системного администратора - 16/08/2012

    [...] Вышла новая доработанная версия скрипта, поэтому все пожелания и вопросы просьба оставлять на этой странице – Скрипт: копирование файлов. [...]

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

Your email address will not be published. Required fields are marked *

(Required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>