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 SET
或SET /?
获取有关Windows 环境变量和各种扩展选项的更多信息。例如,它解释了如何进行搜索/替换和子字符串操作。
【讨论】:
我完全忘记了关于 Windows 的那一点点挑剔的细节。谢谢! @UtsavGupta 我也被困在这个问题上。我之前使用的是 $BUILD_ID。现在对 Windows 上的 %BUILD_ID% 感到满意。【参考方案3】:我应该这样在 Windows 上,环境变量扩展为 %BUILD_NUMBER%
【讨论】:
以上是关于Jenkins 中的环境变量如何与 Windows 批处理命令一起使用?的主要内容,如果未能解决你的问题,请参考以下文章