我正在尝试编写一个简单的批处理,以从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之间的路径
感谢您的帮助。
答案 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%