提取XML文件中两个单词之间的文本行

时间:2019-07-09 10:11:16

标签: batch-file cmd token

我正在尝试编写一个简单的批处理,以从xml文件中提取一些特定的文本。

该文件始终位于同一位置,并且我需要提取的文本是UNC路径,因此始终会有所不同,但始终位于同一点之间:-

从文件的内容(如下)中,我想回显C:\ Somefolder \ somewhere 从2个服务器路径条目之间

<?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

我已经尝试过了,但是我不认为我想用delims是我要提取的行之前的2个空格,但是标记1,2或3不会产生期望的结果。

我只运行批处理并回显ServerPath和ServerPath之间的路径

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

批处理不是处理XML文件的正确选择,但是如果知道格式,则有可能:

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

注意:这与您问题中显示的文件完全一样。如果XML文件的格式更改,则不能保证获得正确的结果。

答案 1 :(得分:0)

尝试使用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%