我必须知道Jenkins版本,它只出现在' config.xml'文件,下面是它的内容:
< version > 1.652 < / version >
(我修改了xml行的语法,使其作为平面文本可见) 我试图在标签1.652和echo&#34; 1.652&#34;之间拉取版本号。到.txt文件。
我是初学者,并且在网上找不到特定的代码。
答案 0 :(得分:1)
直接回答问题的简单解决方案是将此PowerShell单线程放入.bat脚本中:
powershell "([xml](gc config.xml)).SelectSingleNode('//version/text()').data" >out.txt
这将客观化您的XML数据,选择第一个<version>
标记的子文本节点,并将其值输出到out.txt。
我对你将版本值写入.txt文件有点怀疑,但是,当它已经在config.xml中编写时。这有必要吗?听起来您将使用一些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 one(ish)-liner。它使用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.
)