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

Jenkins中如何使用Windows批处理命令使用环境变量?,windows,batch-file,hudson,jenkins,Windows,Batch File,Hudson,Jenkins,我试图在我的xcopy脚本中使用Jenkins(全局)环境变量 ${WORKSPACE} doesn't work "${WORKSPACE}" doesn't work '${WORKSPACE}' doesn't work 在windows中,您应该使用%WORKSPACE%我对Jenkins一无所知,但看起来您正在尝试使用某种形式的unix语法访问环境变量,这是行不通的 如果变量名为WORKSPACE,则该值将在Windows批处理中使用展开 %WORKSPACE%。这种形式的扩展在解析

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

${WORKSPACE} doesn't work
"${WORKSPACE}" doesn't work
'${WORKSPACE}' doesn't work

在windows中,您应该使用
%WORKSPACE%

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

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

echo %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

从命令行中使用
帮助设置
设置/?
,以获取有关Windows环境变量和各种扩展选项的详细信息。例如,它解释了如何执行搜索/替换和子字符串操作。

我应该在Windows上执行此操作,环境变量扩展为%BUILD\u NUMBER%

是。在Hudson的“Build/Command/Execute Windows batch Command”字段中,我完全忘记了关于Windows的那些吹毛求疵的细节。谢谢@乌萨夫古普塔我也被困在这件事上。我之前使用的是$BUILD\u ID。现在对windows上的%BUILD\u ID%感到满意。