Это может быть сделано таким образом (предполагается, что ваш вход в файле «test1.html»):
findstr "<name>" test1.html > temp1.lis
FOR /F "tokens=2 delims=>" %%i in (temp1.lis) do @echo %%i > temp2.lis
FOR /F "tokens=1 delims=<" %%i in (temp2.lis) do @echo %%i > temp3.lis
Первая линия охранником, что только HTML/XML тег «имя» будет совпадать две линии FOR (вы можете уже сделали это). Результат сохраняется во временном файле «temp1.lis».
Вторая строка, что находится справа от первого «>» - фактически, что после «< name>». На этом этапе «MyName </name» остается во временном файле «temp2.lis» (как закрывающий тег также содержит «>»). Обратите внимание на двойной «%» s (%% i), поскольку он находится в файле BAT (если вы хотите напрямую проверить из командной строки, тогда он должен быть только «%»).
Захват третьей линии, что находится слева от первого «<» - это желаемый результат: «MyName» (осталось «<» в «MyName </имя»). Результат - в переменной %% i, и вы можете вызвать функцию с %% i в качестве параметра и получить результат в этой функции (в строке FOR над функцией было встроенное «эхо» и результат Таким образом, в конечном итоге в временных файлов «temp3.lis» путем перенаправления стандартного выхода)
Обратите внимание, что выше только работает, если
<name>MyName</name>
является первым HTML/XML тег в линия.
Если это не так или вы хотите более надежное решение , вы можете вместо этого вызвать функцию в первой строке FOR (то, что получает %% i в качестве первого параметра). Эта функция может затем заменить «< имя>» на один символ, который вы уверен, что нет на входе, например.:
set RLINE=%MYLINE:<name>=£%
Пояснение: если строка ввода в переменной% MYLINE%, то «< имя>» будет заменено на «Е», и результат будет присваивается переменной% RLINE%.
Причина замены заключается в том, что разделители для цикла FOR имеют только один символ.
Вы можете использовать «Е» в качестве разделителя в цикле (для извлечения, что справа от «< имени>» - как раньше):
echo %RLINE%>temp5.lis
FOR /F "tokens=2 delims=£" %%i in (temp5.lis) do @echo %%i > temp6.lis
Вы должны повторить это техника для "</name>" (но только если < имя> MyName </name> не первый тег HTML/XML в строке).
Как видите, это возможно, но это довольно болезненно.
Если вы приложите текст, похожий на код, в обратном направлении (символ ''), вы можете отображать то, что вы набираете дословно. Это позволит избежать путаницы - мне пришлось несколько раз прочитать ваш вопрос, чтобы понять, что вы заменяете круглые скобки для угловых скобок. –