[英]Read text between specific tag of .XML file and display it in a .txt file using batch file
我必须知道仅在“ config.xml”文件中存在的Jenkins版本,以下是其内容:
< version > 1.652 < / version >
(我已经修改了xml行的语法,以便它可以作为平面文本显示)。我正在尝试在标签1.652之间提取版本号,并将“ 1.652”回显到.txt文件。
我是一个初学者,确实没有在线找到特定的代码来做。
直接回答问题的简单解决方案是将此PowerShell一线式放入.bat脚本中:
powershell "([xml](gc config.xml)).SelectSingleNode('//version/text()').data" >out.txt
这将使您的XML数据物化,选择第一个<version>
标记的子文本节点,并将其值输出到out.txt。
不过,对于已经将版本值写入.txt文件的情况,我有点怀疑。 那有必要吗? 听起来您将要采用一些Rube Goldberg的复杂性级别,以将版本数据导出到文本文件,然后将值重定向回变量。 如果这是您要计划的,那就比需要的要复杂得多。 如果要比较版本号和其他内容,请留在PowerShell中执行比较。
这是一个本地PowerShell .ps1脚本示例:
[version]$minimumVer = "1.652"
[version]$jenkinsVer = ([xml](gc config.xml)).SelectSingleNode('//version/text()').data
if ($minimumVer -gt $jenkinsVer) {
"Fail. Jenkins must be version $minimumVer or newer for this to work."
}
else {
"Happiness and rainbows."
}
这是为.bat脚本格式化的PowerShell衬里。 它使用exit [boolean]
设置%ERRORLEVEL%
用于条件执行( &&
和||
东西)。
@echo off & setlocal
set "minVersion=1.652"
set "psCmd=powershell "exit ([version](([xml](gc config.xml)).SelectSingleNode(^
'//version/text()').data) -ge [version]'%minVersion%')""
%psCmd% && (
echo Fail. Jenkins must be version %minVersion% or newer for this to work.
) || (
echo Happiness and rainbows.
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.