|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] изменить несколько строк в файле |
|
|
CMD/BAT - [решено] изменить несколько строк в файле
|
Новый участник Сообщения: 38 |
всем привет
не получается изменить три строки в файле конфигурации по найденному в сети батнику: @echo off setlocal enabledelayedexpansion Set infile=%~dp0\other\openvpn\conf\client.ovpn Set infileout="%ProgramFiles%\OpenVPN\config\client.ovpn" Set findip=ipaddress Set findcrt=user.crt Set findkey=user.key Set replaceip=192.168.0.1 1194 Set replacecrt=%computername%.crt Set replacekey=%computername%.key @echo off setlocal enabledelayedexpansion set COUNT=0 for /F "tokens=* delims=" %%n in (!infile!) do ( set LINE=%%n set TMPR=!LINE:%findip%=%replaceip%! Echo !TMPR!>>TMP.TXT ) move /Y TMP.TXT %infileout% exit |
|
Отправлено: 18:40, 25-06-2018 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать так пойдёт?
корень всего - каталог autoinstall |
Последний раз редактировалось man8531, 26-06-2018 в 14:46. Отправлено: 14:40, 26-06-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать man8531, Я ориентировался на Ваш код - скрипт расположен в той же папке, что и папка other.
Если скрипт и папка other расположены на одном диске (причём имя и вложенность папки не имеет значения), то для пути Диск:\other\openvpn\conf\client.ovpn замените строку Цитата man8531:
|
|
------- Последний раз редактировалось megaloman, 26-06-2018 в 16:04. Отправлено: 15:55, 26-06-2018 | #22 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать megaloman,
не помогает, говорит, что не найден путь до переменной FileIn наверное, я делаю что-то не так или некорректно объясняю: мой каталог установки (autoinstall), будет располагаться где угодно - рабочий стол, папка загрузок и тд. в батниках я использую переменную %~dp0 для обозначения исходной папки, откуда всё запускается. у меня один большой батник, который производит установку программ и конфигурирует некоторые конфиги с помошью доп батников или скриптов, вроде Вашего. так вот, сейчас я поместил в главный батник, что лежит в корне каталога autoinstall, строку: он, с админскими правами, запускает Ваш скрипт, что лежит в каталоге \autoinstall\script\openvpn_Ethernet.vbs сам каталог autoinstall сейчас находится на рабочем столе. наверное, в этом случае придётся ложить конфиги в папку script. потому, как я понял, головным каталогом скрипт распознаёт script в этом виде он отрабатывает всё без проблем, если конфиг опенвпн поместить в каталог script Скрытый текст
Set FSO = CreateObject("Scripting.FileSystemObject") FileIn = FSO.GetParentFolderName(WScript.ScriptFullName) + "\openvpn\conf\client.ovpn" FileOut = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%PROGRAMFILES%") + "\OpenVPN\config\client.ovpn" ' MsgBox FileIn + vbCrLf + FileOut ComputerName = CreateObject("WScript.Network").ComputerName Dim What(2), Rep(2) What(0) = "ipaddress" What(1) = "user.crt" What(2) = "user.key" Rep(0) = "192.168.0.1 1194" Rep(1) = ComputerName + ".crt" Rep(2) = ComputerName + ".key" ' MsgBox What(0) + vbTab + Rep(0) + vbCrLf + What(1) + vbTab + Rep(1) + vbCrLf + What(2) + vbTab + Rep(2) Set fIn = FSO.OpenTextFile(FileIn, 1, False) ', -2) Alls = fIn.ReadAll fIn.Close For i = 0 To UBound(What) Alls = Replace(Alls, What(i), Rep(i)) Next Set fIn = FSO.CreateTextFile(FileOut, True) fIn.Write Alls fIn.Close |
Последний раз редактировалось man8531, 26-06-2018 в 17:00. Отправлено: 16:39, 26-06-2018 | #23 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата man8531:
Кстати, а наверное необходимо писАть путь в кавычках, в любом случае они не мешают. "%~dp0script\openvpn_Ethernet.vbs" |
|
------- Последний раз редактировалось megaloman, 26-06-2018 в 18:22. Отправлено: 17:47, 26-06-2018 | #24 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
|
||
Отправлено: 18:48, 26-06-2018 | #25 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать man8531, Я слегка запутался, иду по пути наименьшего сопротивления:
Батник: @Echo Off Set "infile=%~dp0other\openvpn\conf\client.ovpn" Set "infileout=%ProgramFiles%\OpenVPN\config\client.ovpn" "%~dp0script\openvpn_Ethernet.vbs" "%infile%" "%infileout%" With WScript.Arguments If .Count < 2 Then WScript.Quit 1 FileIn = .Item(0) FileOut = .Item(1) End With ' MsgBox FileIn + vbCrLf + FileOut ComputerName = CreateObject("WScript.Network").ComputerName Dim What(2), Rep(2) What(0) = "ipaddress" What(1) = "user.crt" What(2) = "user.Key" Rep(0) = "192.168.0.1 1194" Rep(1) = ComputerName + ".crt" Rep(2) = ComputerName + ".key" Set FSO = CreateObject("Scripting.FileSystemObject") Set fIn = FSO.OpenTextFile(FileIn, 1, False) ', -2) Alls = fIn.ReadAll fIn.Close For i = 0 To UBound(What) Alls = Replace(Alls, What(i), Rep(i)) Next Set fIn = FSO.CreateTextFile(FileOut, True) fIn.Write Alls fIn.Close WScript.Quit 0 |
------- Отправлено: 18:56, 26-06-2018 | #26 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать megaloman,
если всё сложно, то и не стоит оно того. я, думал, что пару символов добавил и всё, а тут симбиоз уже намечается какой-то. upd в общем решил вопрос двумя шаблонами, которые будут копироваться в каталог программы, в зависимости от потребности. а остальные два параметра руками потом поправлю. upd а лучше, чтобы труды не пропали, размещу конфиги в папке со скриптами, там они будут их отрабатывать. upd положил - всё отлично отрабатывают! спасибо! |
Последний раз редактировалось man8531, 26-06-2018 в 21:02. Отправлено: 19:36, 26-06-2018 | #27 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:54, 26-06-2018 | #28 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать man8531,
Вот батник, совмещенный с js. Всё в одном файле. Батник должен быть в рядом с папкой other. У меня всё это хозяйство в папке autoinstall, которая на рабочем столе. Работает.
Всё ваше дополнительное батниковаяние, если надо, должно происходить между имеющимися /* */ @set @E=1; /* @Echo Off Set "infile=%~dp0other\openvpn\conf\client.ovpn" Set "infileout=%ProgramFiles%\OpenVPN\config\client.ovpn" cscript //NoLogo /E:jscript "%~dpnx0" "%infile%" "%infileout%" GoTo :Eof */ var oArg = WScript.Arguments; var FSO = WScript.CreateObject("Scripting.FileSystemObject"); var FileIn = oArg(0); var FileOut = oArg(1); var ComputerName = WScript.CreateObject("WScript.Network").ComputerName; var What = new Array(2); var Rep = new Array(2); What[0] = "ipaddress"; What[1] = "user.crt"; What[2] = "user.key"; Rep[0] = "192.168.0.1 1194"; Rep[1] = ComputerName + ".crt"; Rep[2] = ComputerName + ".key"; var fIn = FSO.OpenTextFile(FileIn, 1, false); var Alls = fIn.ReadAll(); fIn.Close(); for (i=0; i<What.length; i++) {Alls = Alls.replace(What[i],Rep[i]);} fIn = FSO.CreateTextFile(FileOut, true); fIn.Write(Alls); fIn.Close(); WScript.Quit(0); |
------- Отправлено: 23:50, 26-06-2018 | #29 |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 06:27, 27-06-2018 | #30 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Изменение строк в файле | Nikugorsk | Скриптовые языки администрирования Windows | 13 | 08-06-2018 18:32 | |
CMD/BAT - Найти текст в файле и вставить над ним несколько строк | Sergey.l | Скриптовые языки администрирования Windows | 7 | 28-01-2018 23:06 | |
CMD/BAT - [решено] Найти текст в файле и вставить над ним несколько строк | Sergey.l | Скриптовые языки администрирования Windows | 5 | 27-12-2017 18:47 | |
CMD/BAT - Нумерация строк в файле | ВиталийВ | Скриптовые языки администрирования Windows | 2 | 25-09-2015 19:06 | |
VBS/WSH/JS - Удаление строк в REG файле | gen0m.rsw | Скриптовые языки администрирования Windows | 9 | 28-09-2011 18:03 |
|