Переносим список баз с одного места в другое. Пользователей настолько много что я даже не знаю сколько их. Скрипт который админы полажт в нужное место. Меняем данные в файле 1CEStart.cfg
Основная проблема которая была это кодировка
сам скрипт
'==========================================================================
'
' AUTHOR: GNN (3:16) ,
' DATE : 14.03.2018
'
'==========================================================================
On Error Resume Next
Dim fso
Dim V8iConfigFile
Dim dir
Const ForReading = 1, ForWriting = 2, ForAppending = 8
'Настраиваем лог файл
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("Wscript.Shell")
strSysVarTEMP = WshShell.ExpandEnvironmentStrings("%TEMP%")
Set oScriptLog = fso.OpenTextFile(strSysVarTEMP + "\_dbconn.log",ForWriting,True)
oScriptLog.Write ""
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Start..."
oScriptLog.WriteLine(strToLog)
'Проверяем, что 1С установлена
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not (objFSO.FolderExists("C:\Program Files\1cv8") Or objFSO.FolderExists("C:\Program Files (x86)\1cv8")) Then
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "1C 8 не установлена... Выход..."
oScriptLog.WriteLine(strToLog)
WScript.quit
End If
'Проверяем есть ли старый файл и удаляем в случае наличия'
APPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%")
v8i = APPDATA + "\1C\1CEStart\ibases.v8i"
If fso.FileExists(v8i) Then
fso.DeleteFile(v8i)
Set V8iConfigFile = fso.CreateTextFile(v8i ,True)
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Удален файл v8i и создан новый"
oScriptLog.WriteLine(strToLog)
' Если файла нет (1С только установлена), то создаем файла по указанному пути
Else
Set dir = fso.CreateFolder(APPDATA + "\1C")
Set dir = fso.CreateFolder(dir + "\1CEStart")
Set V8iConfigFile = fso.CreateTextFile(v8i ,True)
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Создан файл v8i"
oScriptLog.WriteLine(strToLog)
End If
fName = APPDATA + "\1C\1CEStart\1CEStart.cfg" ' Где текстовый файл
' Что бы прочитать файл меняем кодировку с UCS-2 Little Endian на UTF-8
Set ADODBStream = CreateObject("ADODB.Stream")
ADODBStream.Type = 2
ADODBStream.Charset = "UTF-16"
ADODBStream.Open()
ADODBStream.LoadFromFile(fName)
Text = ADODBStream.ReadText()
ADODBStream.Close()
ADODBStream.Charset = "UTF-8"
ADODBStream.Open()
ADODBStream.WriteText(Text)
ADODBStream.SaveToFile fName, 2
ADODBStream.Close()
tStrok = "\\data-server\1C\Bases" ' Что ищем в строке текста
oStrok = "\\data-server.dpmz.local\1C\Bases"
bStrok = "\\n.n.ru\ch\G\PROGRAMS\1C\Baselist" ' Что вставляем
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.OpenTextFile(fName, 1, False) ' Открываем исходный текст файл для чтения
AllTxt = F.ReadAll() ' Cчитываем весь файл в строковую переменную
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "прочитали 1CEStart"
oScriptLog.WriteLine(strToLog)
F.Close ' Закрываем файл
AllTxt=Replace(AllTxt, oStrok, bStrok)
AllTxt=Replace(AllTxt, tStrok, bStrok)
Set F = FSO.OpenTextFile(fName, 2, False) ' Открываем исходный файл для записи
F.Write AllTxt ' Записываем полученное на место исходного файла
F.Close ' Закрываем файл
strToLog = CStr(Date())+" "+CStr(Time()) + " - " + "Записали 1CEStart"
oScriptLog.WriteLine(strToLog)
не оптимально! Можно было не ковырять файл, а просто его удалить и на его место скопировать нужный. Но это конечно в зависимости от ситуации
ОтветитьУдалить