Извлечь строку текста между двумя словами в XML-файл - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь написать простой пакет для извлечения некоторого определенного текста из XML-файла.

Файл всегда находится в одном и том же месте, и текст, который мне нужно извлечь, - это UNC-путь, поэтому он всегда будет меняться, но всегда будет находиться в одинаковых точках: -

Из содержимого файла (ниже) я хочу повторить C: \ Somefolder \ где-то между двумя записями пути к серверу

<?xml version="1.0" encoding="utf-8"?>
<ClientConfigurationFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ServerPath>C:\somefolder\somewhere</ServerPath>

Я осмотрелся и нашел похожее, но ничто не вполне соответствует моим потребностям. Также попытался настроить некоторые существующие разделы токенов, которые есть в других пакетах.

@echo off
FOR /F "tokens=1 delims=  " %%A IN (C:\Test\file.xml) DO SET FOLDER=%%A
echo %FOLDER%
pause

Я пробовал это, но я не думаю, что у меня деньги, разделители - это 2 пробела перед строкой, которые я хочу извлечь, но токены 1,2 или 3 просто не дают желаемых результатов.

Я бы просто запустил пакет и повторил путь между ServerPath и ServerPath

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Пакетная обработка не является правильным выбором для обработки файлов XML, но если форматирование известно, возможно:

for /f "tokens=3 delims=<>" %%a in ('find "<ServerPath>" "C:\Test\file.xml"') do set "Serverpath=%%a"
echo %serverpath%

Примечание: это работает с файлом точно так, как показано в вашем вопросе. Нет гарантии правильных результатов, если форматирование файла XML изменится.

0 голосов
/ 09 июля 2019

попробуйте с xpath.bat (если это действительный xml):

call xpath.bat test.xml "//ServerPath"

или

for /f "tokens=* delims=" %%a in ('xpath.bat test.xml "//ServerPath"') do set "server_path=%%~a"
echo %server_path%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...