Jenkins中如何使用环境变量与Windows批处理命令?

78

我正在尝试在xcopy脚本中使用Jenkins(全局)环境变量

${WORKSPACE} doesn't work
"${WORKSPACE}" doesn't work
'${WORKSPACE}' doesn't work
3个回答

148

我对Jenkins一无所知,但看起来你正在尝试使用某种Unix语法访问环境变量 - 这是行不通的。

如果变量名为WORKSPACE,则可以使用Windows批处理中的
%WORKSPACE%来展开其值。此形式的展开在解析时执行。例如,这将打印出WORKSPACE的值:

echo %WORKSPACE%

如果您需要在执行时获取该值,则需要使用延迟扩展 !WORKSPACE!。默认情况下通常不启用延迟扩展。使用 SETLOCAL EnableDelayedExpansion 来启用它。延迟扩展经常是必要的,因为在括号内的代码块和/或由 &&&|| 连接的多个命令将一次性解析,因此除非使用延迟扩展,否则在块内分配的值不能在同一块中后续读取。

setlocal enableDelayedExpansion
set WORKSPACE=BEFORE
(
  set WORKSPACE=AFTER
  echo Normal Expansion = %WORKSPACE%
  echo Delayed Expansion = !WORKSPACE!
)
上述代码的输出为:
Normal Expansion = BEFORE
Delayed Expansion = AFTER

在命令行中使用HELP SETSET /?来获取有关Windows环境变量和各种扩展选项的更多信息。例如,它解释了如何进行搜索/替换和子字符串操作。


1
我完全忘记了关于Windows的那个小细节。谢谢! - JoxTraex
我之前也遇到了这个问题。我之前使用的是$BUILD_ID。现在在Windows上使用%BUILD_ID%感到很满意。 - Himanshu Chauhan

30
在Windows中,你应该使用%WORKSPACE%

6
是的。并且在Hudson的“构建/命令/执行Windows批处理命令”字段中。 - Volodymyr Bezuglyy
“%VARIABLE%” 语法也可用于引用用户定义的 Jenkins 变量。 - shikha singh

4

我应该在Windows上使用,环境变量扩展是%BUILD_NUMBER%


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接