|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Чтение/запись строк из конфигурационного файла в переменную |
|
CMD/BAT - [решено] Чтение/запись строк из конфигурационного файла в переменную
|
Новый участник Сообщения: 4 |
Профиль | Отправить PM | Цитировать Приветствую! Есть файл конфигураций для программы setting.xml, имеет следующий вид:
<?xml version="1.0" encoding="utf-16"?> <UserSettingsXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <AuthType>Google</AuthType> <GoogleUsername>username</GoogleUsername> <GooglePassword>password</GooglePassword> <Filter> <Name>Use</Name> <Count>20</Count> </Filter> </UserSettingsXml> for /f "UseBackQ Delims=" %%A IN ("setting.xml") do ( set /a c+=1 if !c!==4 set "a=%%A" if !c!==5 set "b=%%A" ) А потом , измененный username запись обратно в файл. Для очистки "лишнего" пробовал: но что-то вообще не работает Заранее спасибо! |
|
Отправлено: 11:30, 30-07-2016 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать @echo off setlocal enabledelayedexpansion set "sf=<GoogleUsername>" &: Поиск строки "<GoogleUsername>username</GoogleUsername>" set "sz=s_username" &: Здесь указать что вместо username <"setting.xml">>$ (for /f "delims=" %%a in ('more') do echo "%%a"|>nul find/i "%sf%" && ( for /f "tokens=1-3 delims=>< " %%b in ("%%~a") do set "z=%%c"& echo: ^<%%b^>^<!z:%%c=%sz%!^>^<%%d^> ) || ( echo %%a ) ) ) move $ "setting.xml" exit |
Последний раз редактировалось alpap, 30-07-2016 в 13:56. Причина: расширение указал как в задаче Отправлено: 13:50, 30-07-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Цитата alpap:
, а можно без <>, чисто s_username, т.к программа не прочитает код. и можно раздельно операцию поиска и отдельно замены? т.е 1) поиск в файле и внесение в переменную значения между >< 2) Ввод и замена в файле? Спасибо. |
|
Отправлено: 15:40, 30-07-2016 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Обе строки:
@echo off setlocal enabledelayedexpansion set "sf1=<GoogleUsername>" &: Поиск строки "<GoogleUsername>username</GoogleUsername>" set "sf2=<GooglePassword>" &: Поиск строки "<GooglePassword>password</GooglePassword>" set "sz1=s_username" &: Здесь указать что вместо username set "sz2=s_password" &: Здесь указать что вместо password <"setting.xml">>$ (for /f "delims=" %%a in ('more') do @( echo "%%~a"|>nul find "%sf1%" && ( for /f "tokens=1-3 delims=>< " %%b in ("%%~a") do @set "z1=%%c"& echo: ^<%%b^>^<!z1:%%c=%sz1%!^>^<%%d^> ) || ( echo "%%~a"|>nul find "%sf2%" && for /f "tokens=1-3 delims=>< " %%b in ("%%~a") do @set "z2=%%c"& echo: ^<%%b^>^<!z2:%%c=%sz2%!^>^<%%d^> ) || ( echo %%a ) ) ) move $ "setting.xml" exit Цитата anonymous_prodject:
На выходе вы получете <?xml version="1.0" encoding="utf-16"?> <UserSettingsXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <AuthType>Google</AuthType> <GoogleUsername><s_username></GoogleUsername> <GooglePassword><password></GooglePassword> <Filter> <Name>Use</Name> <Count>20</Count> </Filter> </UserSettingsXml> иначе для чего все это делается. Или объясните толком какова конечная цель операции. Если хотите взять в переменную середину строки [<GoogleUsername>username</GoogleUsername>]: @echo off <"setting.xml" (for /f "tokens=2 delims=>< " %%a in ('find "<GoogleUsername>"') do @echo %%a) pause>nul Цитата anonymous_prodject:
|
||
Отправлено: 16:03, 30-07-2016 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Да не.. эт я написал все вместе вам, а так буду пихать в разные места в скрипте.
Конечная цель? Написать полноценный скрипт с меню и т.п, при выборе допустим одного пункта он будет искать в файле значения и записывать в переменные. В другом же пункте пользователь вводит значения и они записываются в файл. Да все вроде как знаю, но вот с таким первый раз столкнулся. Цитата alpap:
<?xml version="1.0" encoding="utf-16"?> <UserSettingsXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <AuthType>Google</AuthType> <GoogleUsername>s_username</GoogleUsername> <GooglePassword>password</GooglePassword> <Filter> <Name>Use</Name> <Count>20</Count> </Filter> </UserSettingsXml> |
||
Отправлено: 17:12, 30-07-2016 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
|
|
Отправлено: 17:19, 30-07-2016 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Вот, неужели, сделал рабочий прототип. Спасибо.
@echo off setlocal enabledelayedexpansion <"setting.xml" (for /f "tokens=2 delims=>< " %%a in ('find "<GoogleUsername>"') do @echo %%a) pause > nul echo enter mail: Set /p sz= set "sf=<GoogleUsername>" &: Поиск строки "<GoogleUsername>username</GoogleUsername>" <"setting.xml">>$ (for /f "delims=" %%a in ('more') do echo "%%a"|>nul find/i "%sf%" && ( for /f "tokens=1-3 delims=>< " %%b in ("%%~a") do set "z=%%c"& echo: ^<%%b^>!z:%%c=%sz%!^<%%d^> ) || ( echo %%a ) ) ) move $ "setting.xml" |
Отправлено: 17:46, 30-07-2016 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата anonymous_prodject:
@echo off echo Пункт 1. echo Поиск значения "username" в строке с направлением его в переменную. echo Пункт 2. echo Замена значения "username" в файле. set /p vp="Выберите номер пункта: " if %vp%==1 call :p1 if %vp%==2 call :p2 exit :p1 <"setting.xml" (for /f "tokens=2 delims=>< " %%a in ('find "<GoogleUsername>"') do @set "sz=%%a") echo %sz% pause& exit/b :p2 setlocal enabledelayedexpansion echo enter mail: set /p sz= set "sf=<GoogleUsername>" &: Поиск строки "<GoogleUsername>username</GoogleUsername>" <"setting.xml">>$ (for /f "delims=" %%a in ('more') do echo "%%a"|>nul find/i "%sf%" && ( for /f "tokens=1-3 delims=>< " %%b in ("%%~a") do set "z=%%c"& echo: ^<%%b^>!z:%%c=%sz%!^<%%d^> ) || ( echo %%a ) ) ) move $ "setting.xml" exit/b |
|
Отправлено: 19:01, 30-07-2016 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Построчное чтение из файла в переменную | Elven | Скриптовые языки администрирования Windows | 10 | 05-02-2015 16:55 | |
CMD/BAT - [решено] Чтение определённых строк из файла | 4zz | Скриптовые языки администрирования Windows | 9 | 25-03-2013 22:26 | |
[решено] Чтение строк из лога и запись их в файл | support23 | AutoIt | 5 | 18-10-2012 12:04 | |
CMD/BAT - Скрипт, для чтения нужных строк из txt файла в переменную | mr.R | Скриптовые языки администрирования Windows | 1 | 26-07-2012 12:59 | |
CMD/BAT - [решено] Чтение строки из файла в переменную | Николя | Скриптовые языки администрирования Windows | 42 | 17-01-2010 19:42 |
|