Luc*_*ucy 1 xml windows cmd batch-file
我正在尝试读取xml文件,并在XML文件的构建标记之间读取STRING"50".我尝试了但是我没有得到任何输出.
XML文件..
<?xml version="1.0" encoding="UTF-8"?>
<CDMDataXML xmlns="http://www.avocent.org/trellis/CDMLoaderXMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.avocent.org/trellis/CDMLoaderXMLSchema CDMLoaderXMLSchema.xsd">
<CDMDataVersion>
<Major>1</Major>
<Minor>0</Minor>
<Build>50</Build>
<Delimiter>.</Delimiter>
</CDMDataVersion>
Run Code Online (Sandbox Code Playgroud)
批处理文件代码..
@ECHO OFF
SETLOCAL
SET "build="&SET "grab="
FOR /f "tokens=*" %%a IN (version.xml) DO (
IF DEFINED grab SET build=%%a&SET "grab="
IF /i "%%a"=="<BUILD>" SET grab=Y
)
ECHO found build=%build%
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)
如果xml文件和批处理文件位于同一文件夹中并且我从cmd执行批处理文件,代码是否会运行?
编辑1:
@MC ND我做了你提到的更改并运行了代码.当我按下回车键时,光标移动到下一行并卡在那里.我也没有给出任何输出.我也无法关闭cmd窗口.所有这些都在下面的图像文件中解释.

回答
正如下面的MCND建议我将我的文件重命名为findx.bat,它返回值"50",这就是我想要的.正确输出的屏幕截图如下所示.

非常感谢@MCND !!
仅检索所需的行(find),并使用适当的分隔符(<>)标记该行以检索所需的信息
delims: v v v v
line : <Build>50</Build>
tokens:^1 ^2 ^3 ^4
Run Code Online (Sandbox Code Playgroud)
现在,将其转换为代码
@echo off
setlocal enableextensions disabledelayedexpansion
set "build="
for /f "tokens=3 delims=<>" %%a in (
'find /i "<Build>" ^< "file.xml"'
) do set "build=%%a"
echo %build%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12773 次 |
| 最近记录: |