首页 > 解决方案 > 提取 XML 文件中两个单词之间的文本行

问题描述

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

该文件总是在同一个地方,我需要提取的文本是一个 UNC 路径,所以总是会有所不同,但总是在相同的点之间:-

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

<?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 之间的路径

感谢您的任何帮助。

标签: batch-filecmdtoken

解决方案


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

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

注意:这适用于与您的问题中显示的文件完全相同的文件。XML如果文件的格式发生更改,则无法保证正确的结果。


推荐阅读