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

Don*_*ker 66 windows hudson batch-file jenkins

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

${WORKSPACE} doesn't work
"${WORKSPACE}" doesn't work
'${WORKSPACE}' doesn't work
Run Code Online (Sandbox Code Playgroud)

dbe*_*ham 123

我对Jenkins一无所知,但看起来你正试图使用​​某种形式的unix语法来访问环境变量 - 这是行不通的.

如果变量的名称是WORKSPACE,则在Windows批处理中使用扩展值
%WORKSPACE%.这种扩展形式是在解析时执行的.例如,这将打印以筛选WORKSPACE的值

echo %WORKSPACE%
Run Code Online (Sandbox Code Playgroud)

如果在执行时需要该值,则需要使用延迟扩展!WORKSPACE!.默认情况下,通常不启用延迟扩展.使用SETLOCAL EnableDelayedExpansion来启用它.通常需要延迟扩展,因为括号内的代码块会同时被解析,因此除非使用延迟扩展,否则在块中分配的值不能在稍后的同一块中读取.

setlocal enableDelayedExpansion
set WORKSPACE=BEFORE
(
  set WORKSPACE=AFTER
  echo Normal Expansion = %WORKSPACE%
  echo Delayed Expansion = !WORKSPACE!
)
Run Code Online (Sandbox Code Playgroud)

以上的输出是

Normal Expansion = BEFORE
Delayed Expansion = AFTER
Run Code Online (Sandbox Code Playgroud)

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


Vol*_*lyy 26

在Windows中你应该使用%WORKSPACE%.

  • 是.并在Hudson的"构建/命令/执行Windows批处理命令"字段中. (6认同)