MasterLin

                  Блог системного администратора

Окт
1

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

Author MasterLin    Category Скрипты     Tags

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

Первый скрипт будет на языке 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. Не пропусти новые статьи – подпишись на обновление блога и ты всегда сможешь оперативно решить любую неисправность своего компьютера.



Похожие посты:


  • Скрипт: рассылка файлов.
  • Скрипт: копирование папки.
  • Стандартные скрипты утилиты AVZ.
  • Что такое daody.exe?
  • Что такое msrdrv.exe и как с ним бороться?





  • 21 коммент. к записи “Скрипт: копирование файлов.”

    • SeoRead.ru » Интересно почитать № 808 1 Октябрь 2010 - 13:01

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

    • asd 28 Сентябрь 2011 - 11:44

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

    • MasterLin 29 Сентябрь 2011 - 8:32

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

    • melianora 2 Ноябрь 2011 - 19:10

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

    • Андрей 26 Январь 2012 - 16:07

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

    • MasterLin 26 Январь 2012 - 22:29

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

    • Андрей 1 Февраль 2012 - 16:01

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

    • MasterLin 1 Февраль 2012 - 16:55

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

    • Скрипт: рассылка файлов. | Блог системного администратора 2 Февраль 2012 - 13:09

      [...] просьбе читателей немного переделал предыдущий скрипт копирования файлов. Теперь при запуске все файлы из заданной папки на [...]

    • Андрей 2 Февраль 2012 - 14:00

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

    • MasterLin 2 Февраль 2012 - 16:45

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

    • Андрей 2 Февраль 2012 - 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

    • Андрей 2 Февраль 2012 - 20:50

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

    • MasterLin 3 Февраль 2012 - 9:32

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

    • Павел 15 Февраль 2012 - 15:18

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

    • MasterLin 15 Февраль 2012 - 15:23

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

    • Павел 15 Февраль 2012 - 16:02

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

    • areo 29 Март 2012 - 13:13

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

    • MasterLin 30 Март 2012 - 8:52

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

    • Andrey 21 Апрель 2012 - 13:17

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

    • MasterLin 23 Апрель 2012 - 11:53

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

    Прокомментировать

    Это не спам.

    Метки

    Рубрики

    Архивы

    Комментарии

    Статистика

    Add to Google Reader or Homepage

    Читать в Яндекс.Ленте

    Рассылка 'Советы системного администратора'

    Участник Blograte.ru

    Реклама