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

Posted

技术标签:

【中文标题】Jenkins 中的环境变量如何与 Windows 批处理命令一起使用?【英文标题】:How are environment variables used in Jenkins with Windows Batch Command? 【发布时间】:2012-01-26 06:13:14 【问题描述】:

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

$WORKSPACE doesn't work
"$WORKSPACE" doesn't work
'$WORKSPACE' doesn't work

【问题讨论】:

【参考方案1】:

在 windows 中你应该使用%WORKSPACE%

【讨论】:

是的。并在 Hudson 的“构建/命令/执行 Windows 批处理命令”字段中。【参考方案2】:

我对 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 环境变量和各种扩展选项的更多信息。例如,它解释了如何进行搜索/替换和子字符串操作。

【讨论】:

我完全忘记了关于 Windows 的那一点点挑剔的细节。谢谢! @UtsavGupta 我也被困在这个问题上。我之前使用的是 $BUILD_ID。现在对 Windows 上的 %BUILD_ID% 感到满意。【参考方案3】:

我应该这样在 Windows 上,环境变量扩展为 %BUILD_NUMBER%

【讨论】:

以上是关于Jenkins 中的环境变量如何与 Windows 批处理命令一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Jenkins中的环境变量

Jenkins设置环境变量

如何将环境变量传递给 Jenkins 中的 sbt 测试构建步骤?

Jenkins 安装及构建(Windows环境)

msbuild怎么添加 到环境变量

windows环境下简单Jenkins持续集成搭建