2011-12-22 72 views

回答

92

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

如果变量的名称是工作区时,则该值在使用
%WORKSPACE% Windows批处理扩展。这种扩展形式在解析时进行。例如,这将打印如果您在执行时所需要的价值筛选工作区

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

+0

浪费了很多时间在这个谢谢 –

+0

@UtsavGupta 我也被困在这。我早些时候使用了$ BUILD_ID。现在很满意windows上的%BUILD_ID%。 –

20

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

+0

你的意思是批处理文件... – manojlds

+5

是的。在Hudson的“Build/Command/Execute Windows batch command”字段中。 –

相关问题