|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - замена баз в файле ibases.v8i c использованием excel |
|
PowerShell - замена баз в файле ibases.v8i c использованием excel
|
Новый участник Сообщения: 10 |
Профиль | Отправить PM | Цитировать Добрый день.
Помогите пожалуйста как сделать замену всех путей баз в файлах ibases.v8i. Есть сервер, где у кого-то прописаны в файле базы, и эти базы переехали, а поправить нужно у всех, у кого в файле ibases.v8 прописаны старые базы. на новые. При этом новые базы и название старых нужно взять из excel файла. Я предполагаю действовать следует так 1. Последовательно прочитать все файлы "C:\users\*\appdata...\ibases.v8i" 2. Прочитать базы подлежащие замене из cvs файла, в котором есть поля: "СтарыйСервер","СтароеНазваниеБазы","НовыйСервер","НовоеНазваниеБазы" 2a - учесть ситуацию, когда неизвестно какой указан сервер. То есть может быть что угодно между: Connect=Srvr="Тутнепонятночто";Ref="base1"; 3. Скопировать файлы перед изменением с сохранением структуры у кого производилось изменение (например пользователь user1) - значит в папке backup создать папку с именем User1 и уже туда скопировать. 3. Произвести замену по маске пути на новую базу. 4. Сохранить изменение в исходный файл ibases.v8i Моё решение промежуточное: 1. Создан файл excel, с последующим сохранением в cvs с указанными значениями выше. Скрытый текст
Мой код:
[PSHELL] $replacers = Import-Csv "C:\ps\test1.csv" -Encoding Default -Delimiter ";" gc C:\ps\ibases.v8i | ForEach-Object { $output = $_ foreach ($r in $replacers) { $outSrvr='Connect=Srvr="'+$r.Srvr+'";' $outRef='Ref="'+$r.Ref+'";' $outReplace=$outSrvr+$outRef $output = $output -replace ("^Connect=Srvr=.+[$r.Ref$]??"),($outReplace) } return $output | Out-File C:\ps\ibases11.v8i -Append -Encoding utf8 } [/PSHELL] Содержимое файла ibases.v8i Для примера: Скрытый текст
[База1] Connect=Srvr="server1";Ref="Base1"; ID=7853661-7598-49778-3gg6-1414451 OrderInList=7859 Folder=/ OrderInTree=458 External=0 App=Auto WA=1 [База2] Connect=Srvr="server2";Ref="Base2"; ID=7853661-7598-49778-3gg6-1414551 OrderInList=45889 Folder=/ OrderInTree=78 External=0 ClientConnectionSpeed=Normal App=Auto WA=1 Version=8.3 DefaultVersion=8.3.12.1616 [abk _ 2017] Connect=Srvr="Server3";Ref="Base3"; ID=7853661-7598-49778-3gg6-14148551 OrderInList=4586 Folder=/ OrderInTree=1458 External=0 ClientConnectionSpeed=Normal App=Auto WA=1 Version=8.3 Я запутался как сделать регулярное выражение для замены и если выполнять выше код, замена происходит, но например в файле cvs будет последняя база base3, то ВСЕ базы будут замены почему то на base3 и server3 |
|
Отправлено: 09:19, 12-09-2019 |
Старожил Сообщения: 427
|
Профиль | Отправить PM | Цитировать Цитата morgan-12l1:
|
|
Отправлено: 13:39, 12-09-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Цитата Ageron:
Скрытый текст
OldName;NewServer;NewName Base1;TestServer1;Base1 Base2;TestServer2;Base2 Base3;TestServer3;Base3 Base4;TestServer4;Base4 |
|
Отправлено: 14:46, 12-09-2019 | #3 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 15:01, 12-09-2019 | #4 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
СтароеНазваниеБазы;НовыйСервер;НовоеНазваниеБазы Base1;TestServer1;Base1 |
||
Отправлено: 15:05, 12-09-2019 | #5 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Я просто указал на то, что в первом случае у вас 4 колонки, а в CSV - 3.
А что, много вариантов этого файла с базами? Может быть, просто руками нарисовать несколько вариантов файла и распространить его нужным людям, положим, политикой? Заодно будет ясно, кто чем пользуется, и в дальнейшем будет проще добавлять что-либо. |
------- Отправлено: 21:55, 12-09-2019 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Поиск и замена текста в файле | Дмитрий_Кульгейко@vk | Скриптовые языки администрирования Windows | 20 | 12-07-2016 20:01 | |
Любой язык - поиск и замена текста с использованием трех файлов тхт | Alexander_88 | Скриптовые языки администрирования Windows | 0 | 11-10-2015 17:28 | |
CMD/BAT - Замена слова в файле | Xsander1cage | Скриптовые языки администрирования Windows | 2 | 05-11-2014 21:09 | |
CMD/BAT - Поиск и замена в reg файле. | Podagral | Скриптовые языки администрирования Windows | 0 | 05-12-2011 12:08 | |
CMD/BAT - [решено] замена в файле | bonus1 | Скриптовые языки администрирования Windows | 2 | 08-11-2011 11:23 |
|