Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - +VBS: копирование файлов с сервера в папку установки проги

Ответить
Настройки темы
CMD/BAT - +VBS: копирование файлов с сервера в папку установки проги

Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Такая ситуация: в автокад были добавлены некоторые шаблоны (то есть файлы .dwg), которые содержали официальное короткое название нашей организации, сейчас пришло указание сменить официальное короткое название организации и во всех шаблонах в автокаде соответственно поменять это название. Все автокады (2004, 2007, 2008) ставятся с серверов, там есть их развертки. В развертках я все поменяла, теперь получается, что у всех пользователей, у кого автокады были поставлены раньше (это окоо 150 пользователей), старые шаблоны, то есть необходимо их подменить на новые с новым названием, можно конечно ручками ходить по кабинетам и копировать новые файлы с шаблонами, но это долго и нехорошо. Поэтому надо написать такой скрипт, который будет копировать эти файлы с сервера туда, где лежат такие же (только старые) у пользователя на компе. Проблема еще в том, что системные пути разные, то есть у кого-то это Programs, у кого-то Program Files, так же у кого-то Documents, у кого-то Documents and Settings. У меня опыт написания скриптов почти нулевой, но на сколько я знаю, cmd файлы не работают с unc путями, а как задавать системные папки в vbs я никак не могу найти, и как вообще получить путь, где стоит автокад и соответственно лежат шаблоны?

Отправлено: 07:56, 04-04-2008

 


Moderator


Сообщения: 53146
Благодарности: 15423

Профиль | Отправить PM | Цитировать


Цитата la_vanille_ciel:
теперь оказывается, надо еще этот скрипт в автозагрузку сделать...
А в чем проблема?
У вас в организации сеть с доменом?

Отправлено: 11:22, 08-04-2008 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


а еще как проверить, существует такая ветка или нет, а то надо один скрипт только.....

Отправлено: 12:06, 08-04-2008 | #22



Moderator


Сообщения: 53146
Благодарности: 15423

Профиль | Отправить PM | Цитировать


Цитата la_vanille_ciel:
а еще как проверить, существует такая ветка или нет
Я предлагал вариант в 11-м посту.
Первая строчка On Error Resume Next означает, что мы берем на себя контроль ошибок.

Дальше:
Код: Выделить весь код
P = ""
P = WSh.RegRead( ...
If FSO.FolderExists(P) Then ...
Если раздел реестра (или параметр в нем) не существует, RegRead не выполняется (из-за ошибки) и значение переменной P остается равным предыдущему "". В этом случае FSO.FolderExists(P) возвращает False (и если папка не существует, тоже).

Таким образом, для разных версий автокада достаточно размножить эти фрагменты:
Код: Выделить весь код
P = ""
P = WSh.RegRead( ...
If FSO.FolderExists(P) Then ...

P = ""
P = WSh.RegRead( ...
If FSO.FolderExists(P) Then ...

(и т. д.).

Отправлено: 13:06, 08-04-2008 | #23


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Да, я так и сделала! То есть один файл vbs, в котором эти строки размножены для всех автокадов...НО проблема в том, что там все автокады собраны, а у пользователя может стоит два из них или три, например, 4й и 7й...и когда скрипт доходит до ветки реестра, например, 5го автокада, он пишет, что не найден путь (ну его же нет на самом деле) и все ...типа ошибка, а дальше не пойму, он же после ошибки дальше не будет выполняться, так? Вот типа надо проверять наличие ветки до ее чтения....

Я написала RegExists и оно конечно не работает, потому что не знаю какой метод надо...

Отправлено: 19:03, 08-04-2008 | #24



Moderator


Сообщения: 53146
Благодарности: 15423

Профиль | Отправить PM | Цитировать


Цитата la_vanille_ciel:
он пишет, что не найден путь
Цитата Petya V4sechkin:
Первая строчка On Error Resume Next означает, что мы берем на себя контроль ошибок.
Еще раз.
После On Error Resume Next никаких сообщений об ошибках не будет, при ошибке выполнение скрипта продолжится со следующей команды.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:31, 08-04-2008 | #25


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я понимаю, но у меня не принимают, требует, чтобы не было этой строки и чтобы перед чтением проверялось, есть ли такая ветка....
а если настаивать на On Error Resume Next, то вот например, дошел скрипт до 4го автокада, ветка есть, у пользователя стоит, далее идет до пятого, такого у него нет, ошибки не выдастся, но пойдет он дальше до 6го 7го 8го??
А еще можно спросить, P="" это для обнуления какого-то?

Отправлено: 05:53, 09-04-2008 | #26


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уже вроде принимают и так, но теперь надо вывести значение PP1 в сообщение (эхо что ли.. ) в коде:

On Error Resume Next
Dim WSh, FSO, P, P1, P2, P3, P4

Set WSh = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")


P = WSh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.0\ACAD-201:419\AcadLocation")
PP = P & "\Graph\Support"
If FSO.FolderExists(PP) Then FSO.CopyFolder "\\Uzdp-files\share_shell\New_Stamps_CAD\NewShortName2004", PP, True


P1 = WSh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:419")
PP1 = P1 & "\Graph\Support"
If FSO.FolderExists(PP1) Then FSO.CopyFolder "\\Uzdp-files\share_shell\New_Stamps_CAD\NewShortName", PP1, True


P2 = WSh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:419")
PP2 = P2 & "\Graph\Support"
If FSO.FolderExists(PP2) Then FSO.CopyFolder "\\Uzdp-files\share_shell\New_Stamps_CAD\NewShortName", PP2, True


P3 = WSh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.0\ACAD-5000:419\AcadLocation")
PP3 = P3 & "\Graph\Support"
If FSO.FolderExists(PP3) Then FSO.CopyFolder "\\Uzdp-files\share_shell\New_Stamps_CAD\NewShortName", PP3, True


P4 = WSh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.1\ACAD-6000:419\AcadLocation")
PP4 = P4 & "\Graph\Support"
If FSO.FolderExists(PP4) Then FSO.CopyFolder "\\Uzdp-files\share_shell\New_Stamps_CAD\NewShortName", PP4, True


Отправлено: 08:35, 09-04-2008 | #27


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все отлично, все работает

Отправлено: 11:53, 09-04-2008 | #28



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - +VBS: копирование файлов с сервера в папку установки проги

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как сделать через ГП автоматическое копирование библиотек в папку system32 ? zegerman Автоматическая установка приложений 7 01-12-2009 16:15
[решено] SVN, как добавить папку в svn-репозиторий без вложенных в папку файлов? pingUIN Хочу все знать 1 03-11-2009 17:16
Как организовать избирательное копирование в расшаренную папку? MikeGl Microsoft Windows NT/2000/2003 3 19-11-2008 00:31
Копирование исходящей почты в Общую папку Loki3D Microsoft Exchange Server 0 01-10-2007 18:11
Копирование файлов с сервера Alexeus Microsoft Windows NT/2000/2003 7 19-05-2004 15:31




 
Переход