Скрипт: копирование файлов.

Новый пост и снова открывается новая рубрика – Скрипты. Скрипты – это мини-программы, которые могут автоматизировать некоторые рутинные действия с компьютером.

Первый скрипт будет на языке VBS (Visual Basic Script) или VBScript - это язык для написания скриптов, позволяющий легко что-нибудь “сконструировать” в обычном блокноте. Т.е для этого достаточно просто иметь ПК с установленной Windows, где уже есть всем известный блокнот. VBS достаточно прост в освоении, а особенно если Вы уже знаете Microsoft Visual Basic for Applications, частью которого он и является.

Что бы превратить обычный текстовый файл в VBS-скрипт достаточно просто изменить его расширение на VBS и все :)

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

Вот текст (copy_file.vbs):

'скрипт автоматического копирования файлов
StartFolder = "\\server\1" ' откуда копируем
EndFolder = "C:\2\" ' куда копируем
'***********************************************
Set StartFiles = CreateObject("Scripting.FileSystemObject")
Set WSNetwork = CreateObject("WScript.Network")
num = 0
'копируем файлы
For Each File in StartFiles.GetFolder(StartFolder).Files
If LCase(StartFiles.GetExtensionName(File)) = "txt" Then
StartFiles.CopyFile File, EndFolder & File.Name, True
num = num+1
End If
Next
'сообщаем о результатах копирования
If Err.Number Then
WScript.Echo "Обновление прошло с ошибками. Сообщите об этом администратору."
else
WScript.Echo "Обновление прошло успешно. Скопировано " & num & " файлов."
Err.Clear
End if

Данный скрипт копирует все файлы с расширение txt из сетевой папки на локальный компьютер на диск «С» в папку «2». Обратите внимание на наличие слеша в конце адреса к папке приемнику файлов, если ее убрать, то все скопируется на диск «С» с добавлением символа «2» в начало названия каждого файла.

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

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

27 Responses to“Скрипт: копирование файлов.”

  1. asd
    28/09/2011 at 11:44 #

    Спасибо помог ! Только первую строку закомментируй !

  2. 29/09/2011 at 8:32 #

    Причем тут первая строка?????

  3. 02/11/2011 at 19:10 #

    Как то в году 2003-4 попался мне скриптик vbs с возможностью исполнения его на виндовс 98 по указанному в скрипте времени.
    то есть для запуска скрипта не нужно было создавать даже отложенной процедуры запуска средствами виндовс. Достаточно было указать в теле скрипта определенный код, и виндовс его принимал на исполнение самостоятельно….
    С тех пор больше подобного не встречала.
    Вот мне интересно, действительно такое возможно , или мне просто показалось ?

  4. Андрей
    26/01/2012 at 16:07 #

    А если надо по сети сделать расылку файла в одну и туже папку всем поьзователям.
    Как и где перечислить имена компов?

  5. 26/01/2012 at 22:29 #

    Андрей, пожалуй эту задачу можно решить отдельно. Постараюсь в следующем посте описать все подробно. Подпишитесь на обновление блога и Вы не пропустите пост.

  6. Андрей
    01/02/2012 at 16:01 #

    А не подскажите какие строки в нем нужно изменить что бы например копировались все файлы кроме файлов с определенным разрешением

  7. 01/02/2012 at 16:55 #

    Андрей, помоему в условии достаточно поменять = на <>, т.е. если расширение неравно какому-то выбранному ( у меня это txt ), то проводим копирование. Т.о. будут скопированы все файлы кроме txt ( как у меня )

  8. Андрей
    02/02/2012 at 14:00 #

    то ли я дурак то ли лыжи не едут не пашет че то он

  9. 02/02/2012 at 16:45 #

    Андрей, все отлично работает. Только что протестил, заменил в условии = на <> и у меня скопировались все файлы кроме тех что с расширением txt. Может имена папок не правильно указали? ошибки какие-нибудь выдает?
    Напиши текст своего скрипта, я посмотрю где что не изменено.

  10. Андрей
    02/02/2012 at 20:47 #

    StartFolder = “A:\” ‘ откуда копируем
    EndFolder = “C:\2\” ‘ куда копируем
    Set StartFiles = CreateObject(“Scripting.FileSystemObject”)
    Set WSNetwork = CreateObject(“WScript.Network”)
    num = 0
    For Each File in StartFiles.GetFolder(StartFolder).Files
    If LCase(StartFiles.GetExtensionName(File)) = “.txt” Then
    StartFiles.CopyFile File, EndFolder & File.Name, True
    num = num+1
    End If
    Next
    If Err.Number Then
    WScript.Echo “Обновление прошло с ошибками. Сообщите об этом администратору.”
    else
    WScript.Echo “Обновление прошло успешно. Скопировано ” & num & ” файлов.”
    Err.Clear
    End if
    щас попробовал дома тоже самое скрипт ошибку не выдает просто не копирует файлы на работе тоже самое только на работе вместо диска “А” указана сетевая папка и разрешение doc

  11. Андрей
    02/02/2012 at 20:50 #

    И кстати коменнтарии тоже убрал на работе

  12. 03/02/2012 at 9:32 #

    Ошибка при записи условия If LCase(StartFiles.GetExtensionName(File)) = “.txt” Then
    здесь не нужна точка в указании расширения, нужно просто написать txt и все…

  13. Павел
    15/02/2012 at 15:18 #

    Подскажите что где дописать чтобы все файлы и все подпапки тоже копировались?!

  14. 15/02/2012 at 15:23 #

    Павел, уже есть пост на эту тему – Скрипт: копирование папки. Там уже все описано.

  15. Павел
    15/02/2012 at 16:02 #

    примного благодарен! Спасибо!

  16. areo
    29/03/2012 at 13:13 #

    хороший скрипт копирует влет, а как насчет последующего удаления их из папки отправителя?

  17. 30/03/2012 at 8:52 #

    areo, после копирования файлов в цикле If… можно подписать строчку удаления файлов:
    StartFiles.DeleteFile
    думаю будет достаточно.
    Можно почитать еще здесь – Скрипт: копирование папки

  18. Andrey
    21/04/2012 at 13:17 #

    Добрый день. Ваш скрипт хочу использовать немного наоборот. Есть группы каталогов с файлами 2х ур-ней вложенности (месяцы и дни). Оттуда надо скопировать только файлики с расширением .xlsx. Остальное содержимое не нужно. Беда в том, что именно эти файлы названы одинаково. Не подскажете как заставить скрипт сохранять все файлы а не обновлять с перезаписью. Конечное имя значения не имеет, лишь бы все” эксели” скопировались в 1 папку. Спасибо.

  19. 23/04/2012 at 11:53 #

    Andrey, если Вам не важно имя файла, то можно их переименовывать, сразу после копирования в новую папку, например так:
    StartFiles.CopyFile File, aEndFolder(i) & num & “-” & File.Name, True
    т.е. здесь в имени файла в начале будет стоять номер цикла, затем тире и после имя файла.

  20. Георгий
    17/05/2012 at 19:17 #

    А как прописать несколько размешенный типов файлов?

  21. 23/05/2012 at 13:08 #

    Георгий,можно просто расширить условие (оператор – или (or)) и перечислить нужные типы, например:
    If (LCase(StartFiles.GetExtensionName(File)) = “txt”) or (LCase(StartFiles.GetExtensionName(File)) = “doc”) then
    должно сработать :)

  22. Eds13
    10/07/2012 at 18:39 #

    А я ниасили вопрос Георгия. MasterLin, Вы телепат?

  23. 24/07/2012 at 13:29 #

    :)

  24. 22/03/2013 at 0:13 #

    Помогите! Вставила скрипт для отправки сообщений, а он раскопировался на все страницы и не могу его убрать((( Что делать? Помогите! и не открываются все страницы сайта

  25. Алексей
    12/06/2015 at 12:34 #

    Здравствуйте! Скажите пожалуйста, а можно сюда же внедрить код что бы эти файлы архивировались?

Pingbacks/Trackbacks

  1. SeoRead.ru » Интересно почитать № 808 - 01/10/2010

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

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