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

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

Ответить
Настройки темы
CMD/BAT - [решено] изменить несколько строк в файле

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


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

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


всем привет
не получается изменить три строки в файле конфигурации по найденному в сети батнику:
Код: Выделить весь код
@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
как заставить этот батник искать строки указанные в переменных replacekey и replacecrt и вносить это в итоговый файл?

Отправлено: 18:40, 25-06-2018

 

Ветеран


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

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


Цитата man8531:
хорошо, я Вас понял. »
Не поняли. Я же пишу — портированный sed. Знающие коллеги напишут Вам код.

Отправлено: 21:00, 25-06-2018 | #11



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

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


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


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

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


Iska,
я сторонник встроенных в систему средств. если так не получается, то пусть не будет никак. вопрос данный не настолько критичен, чтобы к нему проявлять слишком должного внимания. опенвпн у меня стоит всего на пяти машинах - ручками настрою.

Отправлено: 21:42, 25-06-2018 | #12


Ветеран


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

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


man8531, а что мешает положить тот же sed с библиотеками на тот же самый носитель, с которого Вы будете делать автоустановку, и пользоваться? Ровно так же, как Вы наверняка пользуете и другие сторонние средства для автоустановки? Ничего не мешает.

Отправлено: 21:51, 25-06-2018 | #13


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


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

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


Цитата Iska:
Ровно так же, как Вы наверняка пользуете и другие сторонние средства для автоустановки? »
только для правки некоторых .msi, а во всём остальном: start / wait ..... ну или условие какое, если битность системы отличается от x86.

но, если есть у кого желание возиться с sed, то я непременно возьму это средство на вооружение. можете даже на повер шелл написать, так как неминуемо близится конец для машин с Windows XP.

Отправлено: 05:11, 26-06-2018 | #14


Ветеран


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

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


man8531, я тут подумал о паре вещей:
  1. Разве Вам нужна замена? Вы ведь целиком и полностью переписываете целевой файл, не так ли? Так что мешает, не делая никаких замен, просто его создавать?
  2. В принципе, поскольку из кириллицы у Вас в файле только комментарии, мы можем наплевать на UTF-8, открывая его как ANSI/1251 (поскольку он как раз без BOM), и концы строк — работая с файлом, не как с коллекцией строк, а как с единым целым.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:36, 26-06-2018 | #15


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


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

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


Iska,
1. ничто не мешает
2. можем наплевать

Отправлено: 07:00, 26-06-2018 | #16


Ветеран


Contributor


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

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


man8531,
Попробуйте .vbs
Код: Выделить весь код
Set FSO = CreateObject("Scripting.FileSystemObject")

FileIn = FSO.GetParentFolderName(WScript.ScriptFullName) + "\other\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
Входящий и исходящий файл может быть один и тот же

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 26-06-2018 в 15:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:57, 26-06-2018 | #17


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


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

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


megaloman,
да, всё прекрасно работает, спасибо!

Отправлено: 11:42, 26-06-2018 | #18


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


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

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


megaloman,
вот ведь какая незадача: переместил я скрипт в папку script и он не может найти тот конфигурационный файл, тк в качестве корневого каталога он уже задаёт каталог script. как сделать так, чтобы он в качестве корня каталога всегда выбирал каталог autoinstall? в этом каталоге и расположены все остальные. конкретный путь не подойдёт, так как хочется, чтобы каталог был перемещаем и всё в нём работало.

Отправлено: 12:35, 26-06-2018 | #19


Ветеран


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

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


man8531, покажите структуру каталогов. Конкретно интересует взаиморасположение каталогов script и other\openvpn\conf.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:02, 26-06-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход