Доброго времени суток!
Решил облегчить себе жизнь, но как то получилось не очень...
В сети есть несколько проксиков и нужно перевести пользователей qip с одного проксика на другой. Хранит qip конфиг в текстовом файле и для перевода qip на другой прокси-сервер нужно всего лишь заменить там несколько строк.
Вот что я написал для этого:
1.bat (поиск файлов config.ini на диске С):
@echo off
dir C:\ /s /b | find "config.ini">list001451.txt
call 2.bat
2.bat (привожу пути к файлу в вид, понятный команде cd):
@echo off
for /f "tokens=*" %%b in ('more^<list001451.txt') do call :_replace1 %%b
del list001451.txt
rename new.txt list001451.txt
call 3.bat
goto eof
:_replace1
set i=%*
echo %i%
set i=%i:Config.ini=%
echo %i%>>new.txt
:eof
3.bat (ну и тут собственно открытие файлов config.ini, поиск и замена нужных строк):
for /f "tokens=*" %%f in ('more^<list001451.txt') do cd %%f&call :_replace0
:_replace0
for /f "tokens=*" %%a in ('more^<config.ini') do call :_replace %%a
del config.ini
rename new.ini config.ini
goto eof
:_replace
set i=%*
echo %i%
set i=%i:Port=5190=Port=443%
set i=%i:ProxyType=NONE=ProxyType=HTTP(S)%
set i=%i:ProxyHost==ProxyHost=192.168.130.8%
set i=%i:ProxyHost=192.168.130.18=ProxyHost=192.168.130.8%
set i=%i:ProxyPort==ProxyPort=3128%
set i=%i:ProxyAyth=No=ProxyAuth=Yes%
echo %i%>>new.ini
:eof
Может это не совсем красиво, но как смог...
Как видно изменение строк сторок идёт в 3м батнике и нужно (например) изменить строку Port=5190 на Port=443. Так вот вопрос: как заэкранировать знак = ? Пробывал делать так: Port^=5190=Port^=443, но при такой компоновке он не воспринимает строку Port=5190 и соответственно не заменяет её.
Блин, такую работу проделал и на такой ерунде запоролся
Заранее спасибо за помощь!