Скрипт: рассылка файлов.

По просьбе читателей немного переделал предыдущий скрипт копирования файлов. Теперь при запуске все файлы из заданной папки на любом ПК будут скопированы в определенные, указанные заранее, папки всех компьютеров в сети, т.е. будет произведена рассылка файлов.

Во загнул :)

Для начала текст скрипта, а затем немного разберем его поподробнее:

Листинг (mailing_file.vbs):

'скрипт автоматической рассылки файлов

StartFolder = "\\server\data" ' откуда копируем

aEndFolder = array("\\user1\1\","\\user2\1\") ' куда копируем

'***********************************************

Set StartFiles = CreateObject("Scripting.FileSystemObject")

Set WSNetwork = CreateObject(“WScript.Network”)

For i=0 to UBound (aEndFolder)

num = 0

‘копируем файлы

For Each File in StartFiles.GetFolder(StartFolder).Files

‘If LCase(StartFiles.GetExtensionName(File)) = “txt” Then

StartFiles.CopyFile File, aEndFolder(i) & File.Name, True

num = num+1

‘End If

Next

‘сообщаем о результатах копирования

If Err.Number Then

WScript.Echo “Обновление прошло с ошибками. Сообщите об этом администратору. (адресс с ошибкой ” & aEndFolder(i) & “)”

else

WScript.Echo “Обновление прошло успешно. Скопировано ” & num & ” файлов. В папку ” & aEndFolder(i) & “.”

Err.Clear

End if

 

Next

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

Переменная aEndFolder является массивом, в который Вы и должны записать адреса к папкам, в которые будет происходить копирование. В моем примере используются два адреса \\user1\1\ и \\user2\1\ .

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

Если Вы посмотрите повнимательнее, то обнаружите закомментированные 11 и 14 строки, в этом случае копируются все файлы, но если нужно какие-то определенные, то достаточно вернуть условие наместо и будет происходить выборка по заданному расширению файла.

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

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

На сегодня все, подпишись на обновление блога и ты никогда не пропустишь новые статьи.

18 Responses to“Скрипт: рассылка файлов.”

  1. deonisij_81
    09/02/2012 at 12:13 #

    Здравствуйте!
    Подскажите пожалуйста, как сделать так, чтобы скрипт копировал не файлы, а папки с подкаталогами..

  2. 09/02/2012 at 13:33 #

    deonisij_81, уточните… нужно что бы были скопированы только папки с подкаталогами без файлов, которые могут в них находиться? или же все файлы и каталоги вместе?

  3. deonisij_81
    09/02/2012 at 14:10 #

    все файлы и каталоги вместе..

  4. 09/02/2012 at 14:23 #

    deonisij_81, там немного позагоннее будет, придется процедуры использовать, т.к. не известно сколько каталогов и подкаталогов в папке….. давай так – т.к. в итоге получится интересный скрипт, то я сделаю его отдельным постом и опишу что откуда берется….
    надеюсь не срочно? пост будет в течение 2-х дней максимум.

  5. deonisij_81
    09/02/2012 at 14:33 #

    Отлично, буду ждать, заранее БлагоДарю! :)

  6. Андрей
    13/02/2012 at 9:06 #

    Спасибо, отличный скрипт. А как сделать проверку если комп выключен, чтоб скрипт продолжал следующему компу писать файлы, а то он ошибку выкидывает и на этом все!

  7. 13/02/2012 at 11:25 #

    deonisij_81, Андрей все исправил, как Вы просили – читаем новый пост – Скрипт: копирование папки.

  8. Константин
    25/07/2012 at 16:35 #

    Скрипт отличный. есть вопрос. можно ли расширить до сравнения копируемых файлов с последующей заменой на более поздние?

  9. 26/07/2012 at 13:29 #

    Константин, можно конечно, только времени писать к сожалению нет, завал на работе :( Нужно в закоментированном условии поставить нужную Вам проверку, т.е. время создания. Хотя я бы просто все сразу скопировал – все равно все файлы станут самыми поздними. Если только копировать очень много приходится, тогда есть смысл проверять время.
    Если есть желание, то можете немного подождать, как разделаюсь с делами… что нибудь придумаем :)

  10. Константин
    07/08/2012 at 15:28 #

    Подождем. есть необходимость. прога весит более 120мб. каждая пк а их примерно 50 одновременно начнут к себе копировать 120 многовато за раз. а вот если будет сравнивать и копировать только более новые файлы то будет норма

  11. 10/08/2012 at 11:13 #

    Константин, скоро будет. Уже почти готов – тестирую.

  12. Константин
    10/08/2012 at 11:40 #

    Ожидаем)

  13. 14/08/2012 at 14:37 #

    Константин, готово – Скрипт: копирование файлов.

  14. Константин
    29/08/2012 at 10:00 #

    Спасибо большое)

  15. SherKhan
    07/09/2012 at 15:17 #

    ‘скрипт автоматической рассылки файлов
    StartFolder = “C:\test” ‘ откуда копируем
    aEndFolder = array(“\\192.21.32.164\op\data\”) ‘ куда копируем
    ‘***********************************************
    Set StartFiles = CreateObject(“Scripting.FileSystemObject”)
    Set WSNetwork = CreateObject(“WScript.Network”)
    For i=0 to UBound (aEndFolder)
    num = 0
    ‘копируем файлы
    For Each File in StartFiles.GetFolder(StartFolder).Files
    ‘If LCase(StartFiles.GetExtensionName(File)) = “txt” Then
    StartFiles.CopyFile File, aEndFolder(i) & File.Name, True
    num = num+1
    ‘End If
    Next
    ‘сообщаем о результатах копирования
    If Err.Number Then
    WScript.Echo “Обновление прошло с ошибками. Сообщите об этом администратору. (адресс с ошибкой ” & aEndFolder(i) & “)”
    else
    WScript.Echo “Обновление прошло успешно. Скопировано ” & num & ” файлов. В папку ” & aEndFolder(i) & “.”
    Err.Clear
    End if
    next

    У меня не получаеся скопировать файл! =(
    Как видите в адресе у меня указан IP а не имя (\\192.21.32.164\op\data\)
    С указанием IP вооще может работать ?
    Если указать сетевой диск (Е:\op\data\) то работает (но это в другом скрипте пробовал)
    Просьба помочь …. Спасибо!!!

  16. 10/09/2012 at 14:03 #

    SherKhan, в имени конечно же может стоять и ip-адрес компьютера – скрипт должен работать, проверте права доступа.
    Или воспользуйтесь новым скриптом из серии VBS-скрипты, там проводилось тестирование и на ip-адреса – все работает.

Pingbacks/Trackbacks

  1. MasterLin - 02/02/2012

    Скрипт: рассылка файлов.: По просьбе читателей немного переделал предыдущий скрипт копирования файлов. Теперь пр… http://t.co/oMWPRKgT

  2. Скрипт: копирование папки. | Блог системного администратора - 13/02/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>