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

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

Ответить
Настройки темы
CMD/BAT - Как получить значение искомой подстроки в строке?

Аватара для Loki3D

Старожил


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

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


Есть XML файл, состоящий из одной Длинной строчки
нужно найти в этой строчке упоминание переменной xxx и получить ее значение.
Например.
кусок строки XML: ... aaa="1" bbb=2 ccc="acb" ... xxx="4" ....

вот как то нужно Чему равно xxx

-------
sory 4 my rus


Отправлено: 11:20, 31-03-2010

 

Старожил


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

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


Сложный случай. Во-первых у cmd ограничение длины строки в 4095 по-дефолту (кажется), расширяемое до 16383 (кажется). если Ваш однострочный XML больше, вернее нужная Вам переменная находится дальше границы - то возможно только с привлечением софтин, не входищих в Виндовс по-дефолту.

Далее, сильное влияние на код окажет начало XML-файла, которое просьба здесь процетировать. (не значит, что дословно, все переменные и их значения можете заменить на любые беспалевные для Вас, важна сама структура до начала списка переменных, ну включая первые несколько переменных, чтобы подогнать без ошибок...
Но вообще возможно таким образом (ставка сделана на то, что знак "=" не может оказаться в кавычках, а также на то, что значения переменных не могут содержать пробелов, а разрыв между переменными сделан исключительно на пробелах. *видите сколько "условностей"? )
Код: Выделить весь код
@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

set File="SOURCE.XML"
set Var=xxx

for /f "usebackq tokens=* delims=" %%L in (%File%) do (
set Line=%%L
:XML
for /f "usebackq tokens=1,* delims= " %%B in ('!Line!') do (
for /f "usebackq tokens=1,* delims==" %%V in ('%%B') do if "%%V"=="%Var%" set Value=%%~W
set Line=%%C
)
if not "!Line!"=="" goto XML
)

if not "%Value%"=="" echo %Value%
зы: Если на выходе нужно сохранить двойные кавычки - в фрагменте set Value=%%~W убирите тильду.

-------
Как сказало Дерево Дровосеку: "я - пень".

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

Отправлено: 21:09, 01-04-2010 | #11



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

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


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


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

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


а можно из этого достать только url (все в строчке)?

Код: Выделить весь код
<?xml version='1.0' encoding='UTF-8'?>
<titlepatch status="alive" titleid="BLUS31181"><tag name="BLUS31181_T38" popup="true" signoff="true"><package version="01.13" size="9028848240" sha1sum="1c2d1b7c90fdf2de2902d215cad360fd8702ef3a" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0013-A0113-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.14" size="31146880" sha1sum="5f6f7b4191310888daac9ac9a471ee31e012dfd9" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0014-A0114-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.15" size="31376272" sha1sum="e9d1a0e1aad21357e734c8c04eddfd0c2a33495b" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0015-A0115-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.16" size="387354160" sha1sum="ad606edb241465eb66878e4a68635d366124994d" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0016-A0116-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.17" size="49766464" sha1sum="ee40beab87c57030d54049d6a65560ac50eec7d6" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0017-A0117-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.18" size="352585248" sha1sum="3c12317cbf2d416bf529b0cc582df5c332722045" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0018-A0118-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.19" size="100275776" sha1sum="be08f4328f8658396396a86aa40284fc2c2a3931" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0019-A0119-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.20" size="1122184704" sha1sum="5410b588380f9180739116d72a945b4b8b7a77c3" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0020-A0120-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.21" size="33303440" sha1sum="3144fb7d932ce00ebaa1463532eb98c84d944eaf" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0021-A0121-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.22" size="220153536" sha1sum="f774924769df05e1c61790a98d227241839b5e41" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0022-A0122-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.23" size="55506352" sha1sum="cf5fa69c7ac86465a0f718c9f7d91ee4017be6aa" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0023-A0123-V0100-PE.pkg" ps3_system_ver="04.5000"/><package version="01.24" size="31589024" sha1sum="d70b4eb6596a40e7b92f433f6c6badfb0e43f37f" url="http://b0.ww.np.dl.playstation.net/tppkg/np/BLUS31181/BLUS31181_T38/a6eff409d3a4c771/UP0002-BLUS31181_00-DESTINYPATCH0024-A0124-V0100-PE.pkg" ps3_system_ver="04.5000"><paramsfo><TITLE>Destiny</TITLE></paramsfo></package></tag></titlepatch>
Подскажите батник пожалуйста

Отправлено: 08:37, 24-02-2018 | #12



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Получить значение ячейки из таблицы HTML Lodoss AutoIt 2 30-12-2009 07:15
CMD/BAT - [решено] Как получить значение "вложенной" переменной. volk1234 Скриптовые языки администрирования Windows 4 03-10-2009 15:51
[решено] Как получить значение текущего индекса Combo и кол-во элементов Combo malev AutoIt 4 22-06-2009 16:27
Разное - [решено] как в командной строке получить идентификатор пользователя ? mitiya Microsoft Windows 2000/XP 3 05-09-2008 00:53
Как получить значение CPU и VM. Желательно на С++ Lenycik Программирование и базы данных 3 16-05-2007 12:07




 
Переход