Показать полную графическую версию : Как получить значение искомой подстроки в строке?
Есть XML файл, состоящий из одной Длинной строчки
нужно найти в этой строчке упоминание переменной xxx и получить ее значение.
Например.
кусок строки XML: ... aaa="1" bbb=2 ccc="acb" ... xxx="4" ....
вот как то нужно Чему равно xxx
Busla, Катит. Программист уже написал VBSCript.
Хотелось узнать авторитетное мнение, можно ли такое на CMD, а то у самого не получилось.
zonderz, и как это поможет?
Loki3D
сорри, не заметил что у вас текст в одной строке...
тогда
http://www.dostips.com/DtTipsStringManipulation.php
http://www.google.ru/search?hl=ru&newwindow=1&client=firefox-a&hs=WmI&rls=org.mozilla%3Aen-US%3Aofficial&q=find+substring+in+string+dos&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
zonderz, спасибо за первую ссылку, но к сожалению при попытке использовать пример
set str=the cat in the hat
echo.%str%
set str=%str:the =%
echo.%str%
получаю ошибку что слишком большая строка, в SET
не говоря уже о том, что пока не представляю, как можно передать строчку из файла в переменную.
Loki3D
можно делать - точно говорю, не могу сейчас наптсать - давно было - еще в 95том
штудируйте по дос команды
Если бы была уверенность, что xml записан именно так, я бы разбил вход на подстроки используя в качестве разделителя пробел, получились бы подстроки с присвоениями и ненужный мусор. Эти подстроки разбиваем через знак равенства и получаем пары атрибут и значение. Но в общем случае и вокруг знака равно могут быть пробелы, и после значения может не только пробел.
Busla, как бы ты разбил?. через FOR ?
там же получается Множество значений, раделенных пробелами. и не всегда можно угадать на какую из букв переменной %%а..%%я будет приходится искомая пара xxx=??. Строка то одна.
Сложный случай. Во-первых у 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 убирите тильду.
in1975@vk
24-02-2018, 08:37
а можно из этого достать только 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>
Подскажите батник пожалуйста
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.