PDA

Показать полную графическую версию : +VBS: копирование файлов с сервера в папку установки проги


Страниц : [1] 2

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

la_vanille_ciel
04-04-2008, 08:20
Только что где-то прочитала, что cmd работают с unc путями, подскажите, как это реализовать.

la_vanille_ciel
04-04-2008, 09:00
Set fileFSO = CreateObject("Scripting.FileSystemObject")
source_file = "\\Apu18s\Shell\civil3D_2007_net\acad2000.lsp"
dest_file = "%ProgramFiles%\\Autodesk Civil 3D 2007\\Graph\\acad.lsp"
fileFSO.CopyFile source_file, dest_file , true



Примерно таким должен быть файл, но не работает dest_file, как исправить?

Petya V4sechkin
04-04-2008, 10:40
Только что где-то прочитала, что cmd работают с unc путями, подскажите, как это реализовать.
Copy /Y "\\Apu18s\Shell\civil3D_2007_net\acad2000.lsp" "%ProgramFiles%\Autodesk Civil 3D 2007\Graph\acad.lsp"

la_vanille_ciel
04-04-2008, 10:47
Спасибо за ответ, но не получилось....вобщем так: у меня автокад 2007 стоит в Program Files, а сист перем %Program Files% = Programs.... то есть надо узнать в этом скрипте, где стоит автокад.....сорри, я наверно, не очень правильно объяснила первый раз..

и даже если явно задать Program Files, то все равно не копируется (((((

Petya V4sechkin
04-04-2008, 10:56
la_vanille_ciel, тогда придется брать из реестра.
Выясните, в каком параметре и разделе прописан путь.

Например у 2006-го (русского) это AcadLocation в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.2\ACAD-4001:419

А у 2007-го?

la_vanille_ciel
04-04-2008, 11:00
у 2007 это будет так же, только R 17.0 ...

я нашла скрипт чтения этого пути в реестре, но есть две проблемы с ним:
1) он не совсем рабочий:
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Autodesk"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
If subkey = "AutoCAD" Then
find = True
Path_reg = strKeyPath & "\" & subkey
Exit For
End If
Next
If Not find Then
For Each subkey In arrSubKeys
If subkey = "Adobe Acrobat" Then
find = True
Path_reg = strKeyPath & "\" & subkey
Exit For
End If
Next
End If
If Not find Then
execute_programm_path = ""
Exit Function
Else
objReg.EnumKey HKEY_LOCAL_MACHINE, Path_reg, arrSubKeys
For Each subkey In arrSubKeys
Version_Acr = subkey
Next
End If
objReg.GetStringValue HKEY_LOCAL_MACHINE, Path_reg & "\" & Version_Acr & "\InstallPath\", "", dwValue
execute_programm_path = dwValue
(ругается на exit и еще что-то...)
2) как потом его положить в скрипт, в котором написано копирование:
Set fileFSO = CreateObject("Scripting.FileSystemObject")
source_file = "\\Apu18s\Shell\civil3D_2007_net\acad2004.lsp"
dest_file = "C:\Program Files\Autodesk Civil 3D 2007\Graph\acad.lsp"
fileFSO.CopyFile source_file, dest_file , true
(примерный скрипт копирования vbs, только dest_file не работает).

аа...наврала,
будет: HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R 17.0\ACAD-5000:419

Petya V4sechkin
04-04-2008, 11:11
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R 17.0\ACAD-5000:419
Какое значение AcadLocation?

la_vanille_ciel
07-04-2008, 07:14
HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R 17.0\ACAD-5000:419 - такое у 2007

la_vanille_ciel
07-04-2008, 08:05
AcadLocation = C\ProgramFiles\Autodesk Civil 3D 2007

Petya V4sechkin
07-04-2008, 09:16
la_vanille_ciel, примерно так (у меня работает, во всяком случае):
On Error Resume Next
Dim WSh, FSO, P

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

P = ""
P = WSh.RegRead("HKLM\SOFTWARE\Autodesk\AutoCAD\R 17.0\ACAD-5000:419\AcadLocation")
If FSO.FolderExists(P) Then FSO.CopyFile "\\Apu18s\Shell\civil3D_2007_net\acad2004.lsp", P & "\Graph\acad.lsp", True

Кстати, странное имя acad2004.lsp (в смысле, у вас же 2007).

la_vanille_ciel
07-04-2008, 09:32
((((((((((((((((((((((((((( не работает, может у меня с компом что-то не так......
я убрала строчку, которая не повзволяет ошибке выводиться (если я правильно поняла):On Error Resume Next
и тогда он сообщает: ошибка: строка 8 символ 1, неверная ссылка на корень в разделе реестра, источник WshShell.RegRead ...

Petya V4sechkin
07-04-2008, 09:35
la_vanille_ciel, значит, раздел реестра HKLM\SOFTWARE\Autodesk\AutoCAD\R 17.0\ACAD-5000:419 не существует.

la_vanille_ciel
07-04-2008, 09:39
как это???? я же его своими глазами вижу!!!!
я даже поменяла на HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R 17.0\ACAD-5000:419
чтобы точно уж....а оно не работает...что делать?????

Petya V4sechkin
07-04-2008, 09:40
la_vanille_ciel, уверены, что в \R 17.0\ пробел?

la_vanille_ciel
07-04-2008, 09:42
для всех остальных автокадов тоже не работает (((((((((((((((( такого не может быть...они же все у меня стоят!!

да, я уже и без пробела попробовала...то же самое ((((

la_vanille_ciel
07-04-2008, 09:58
пожалуйста...не бросайте меня ((((((((((((

АААААААААААААААААААААААА Сработало!!!!!! Но только для 2008, который стоит в Programs, для 2004 и 2007 не работает, разница - они стоят в Program Files.....почему так?

la_vanille_ciel
07-04-2008, 10:13
УРА!!!!!!!!!!!!!!!!!!!!!!! ОНИ ВСЕ РАБОТАЮТ!!!!!! Я просто перепечатала эти строки для реестра ручками и убрала пробел везде после R.
Petya V4sechkin - Вы супер!!!! СПАСИБО Вам большое!!!!!!

Petya V4sechkin
07-04-2008, 10:22
ОНИ ВСЕ РАБОТАЮТ!!!!!! Я просто перепечатала эти строки для реестра ручками и убрала пробел везде после R
Чудеса :)

Рад, что смог помочь.

la_vanille_ciel
08-04-2008, 11:11
теперь оказывается, надо еще этот скрипт в автозагрузку сделать.... :(
млин, я вообще в Vbs никак, хоть он и для начинающих... :(




© OSzone.net 2001-2012