如何在Jenkins中将字符串连接到Windows批处理命令变量?

时间:2017-11-16 08:55:03

标签: windows batch-file jenkins

我通过curl命令获取应用程序版本值并将其设置为app_version变量:

for /f "tokens=*" %%a in (
  'curl myApp-installer:8080/info/version'
) do (
  set app_version=%%a
)

这对我有用,我可以按预期获得价值。 稍后,我使用此值作为参数来构建应用程序安装程序以覆盖应用程序版本。

我的应用程序版本语法应为:Beta - 版本%app_version%。 如何将app_version变量连接到" Beta - 版本"字符串?

无论我尝试了什么,我都有2个字符串:" Beta - 版本" " 10.1.2"

2 个答案:

答案 0 :(得分:0)

只需设置另一个名为beta_version的变量:

@echo off
for /f "tokens=*" %%a in (
  'curl myApp-installer:8080/info/version'
) do (
  set app_version=%%a
  set "beta_version=Beta - version %%a"
  set beta_version=%beta_version:"=%
  echo %beta_version%
)

或者如果您愿意:

set "beta_version=Beta - version %app_version%"

答案 1 :(得分:0)

引号实际上是变量值中的文字。您只需要在值中定义没有引号的变量。

当值来自FOR变量时,可以轻松完成此操作 - 您可以使用~修饰符。输入for /?help for,然后查看帮助输出的底部,以获取所有可用修改器的简要说明。

for /f "tokens=*" %%a in (
  'curl myApp-installer:8080/info/version'
) do (
  set "app_version=%%~a"
)

请注意,上面代码中的引号围绕着整个作业 - 结构如此,它们不会包含在值中。此构造通常可以防止毒性字符(扩展FOR变量时不会出现问题),还可以防止意外尾随空白字符包含在值中 - SET命令忽略最后一个引号后面的所有字符。